株式取引履歴の CSV ファイルがあり、そのサイズは 70 メガバイトです。プログラムを実行したいのですが、起動するたびに 30 秒待ちたくありません。
1. 次のように、CSV ファイルを Haskell ソース ファイルに変換するだけです。
From | TO
-------------------------------------------
1380567537,122.166,2.30243 | history = [
... | (1380567537,122.166,2.30243)
... | , ...
... | ]
2. テンプレート Haskell を使用して、ファイルのコンパイル時に解析します。
最初のアプローチを試みたところ、1 つのリスト (70 MB のソース コード) をコンパイルしようとして 3 時間後に、GHC が 12 GB のメモリを消費することがわかりました。
では、TH は利用可能な唯一のアプローチでしょうか? または、ハードコードされた大きなデータ構造をソース ファイルで使用できますか? なぜ GHC はファイルをコンパイルできないのでしょうか? 複雑な最適化か何かのために組み合わせ爆発に行きますか?