これくらいしかできませんでしたが・・・。
data.txt
ls = [1, 2, 3]
main.hs
{-# LANGUAGE CPP #-} #define MY_CONSTANT 2 #include "data.txt" main = do print MY_CONSTANT print ls
2 [1,2,3]
まず、単純なdefineは問題なくできました。
data.txtは、最初単なるCSVにして
ls = [ #include "data.txt" ]
と書けるかな、と思ったらパースエラーになりました。
ちなみにdata.txtは、main.hsと同じディレクトリに置いてあります。
インクルードのパスを通すには、GHCのコマンドラインオプションの-Iを使います。
- Idir
Specify a directory in which to look for #include files, in the usual C way.
http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/options-phases.html
こんな感じになります。
ghc main.hs -IC:\Library\Boost\trunk\boost-svn
Boost.PPで遊ぼうとしたらことごとくパースエラーになったので挫折しました。
追記(2012/02/24 11:55):
やっぱり行頭に # 付けてテキストファイルの先頭に空白入れれば動いた。行頭に # 付けないといけないのが CPP の仕様としてどうなのかはプリプロセッサの詳しい人の登場を待つことにしましょう。 2012-02-23 20:33:28 via web |
data.txt
1, 2, 3
main.hs
{-# LANGUAGE CPP #-} #define MY_CONSTANT 2 ls = [ #include "data.txt" ] main = do print MY_CONSTANT print ls
2 [1,2,3]