Haskellにifdefが無い
Linux版GHC 6.10.4 には System.Win32.DLL
が入ってないっぽく import
でエラーになってしまった.仕方ないので ifdef WIN32
的なアプローチを採ろうかと方法を探ったのだが,GHCの引数 -cpp
もしくは pragma LANGUAGE CPP
でCプリプロセッサにかけるくらいしか方法がないようだ.何考えてるんだろうか... よくこんな腐れ手法がまかり通ってるもんだ.C言語以外のソースコードをCプリプロセッサにかけるんじゃない!! *1 松井さんが怒るよ? 言語の中身には潔癖症でも実装の実用性にはいい加減なのね... (単にまともに使ってるユーザーが少ないだけか?
本当はこう言うのを期待してた... "Industrial strength" がいかなるものか見よ:
- http://www.lispworks.com/documentation/HyperSpec/Body/24_aba.htm CLHS: Section 24.1.2.1 Feature Expressions
そして間違った方向に進んでいるHaskellユーザの一群を発見:
言語の方をどうにかしろよ!!! 訳の分からないpragma*2を沢山導入してるくせに.C#を見習って欲しい(これも真の "industrial strength" だ):
- http://msdn.microsoft.com/en-us/library/ed8yd1ha.aspx C# Preprocessor Directives
追記: 次期規格 Haskell' 策定サイトにはSchemeにおける等価物である SRFI 0 が参考文献として挙がってるので少し期待したんだが,これを直接輸入するという感じではないのか...? 残念.
*1:破綻してるじゃねーか http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/options-phases.html#cpp-string-gaps 4.10.3.1. CPP and string gaps
*2:http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/pragmas.html 7.13. Pragmas