flickr2016/02/29バイナリ化したデータ構造を外部のファイルに保存して、コンパイル時にHaskellソースに埋め込むHaskellには連想配列のように使えるMapというデータ構造(Data.Map)があります。リストのサイズが1万要素とかになるとソース全体が肥大化してコンパイルに無駄な時間がかかるようになります。それをソースから読み込んで使う方法があるに違いありません。(ようするに、RubyでいうMarshal、PythonでいうPickleがしたい、ということです。Haskellが必要です。Haskellと一緒に利用してこの問題を解決してみました。バイナリの辞書を作るまず、外部に保持するバイナリ辞書を下記の手順で用意します。結果を別ファイルに書き出すコードにするとこんな感じ。このコードはバイナリの辞書(Map)を生成するだけなので、コンパイルと実行はきっかり一回だけです。()ここでのポイントは、Mapのもとになる連想リストに日本語などの多バイト文字列がある場合、Data.TextではなくData.ByteString.Lazy.UTF8を使うことです。Data.Textが使えないかというと、バイナリ化に使うData.BinaryがData.Textに対応していないためです。Data.ByteString.Lazy.Char8ではバイト列がぶった切られて日本語の文字が壊れてしまうので、結果的にData.ByteString.Lazy.UTF8を使うしかありません。下記のようにしてHaskellソースに埋め込んで使います。Wiki)Gzipしたバイナリデータのリテラル表現をソースに埋め込んでいる事例(そんな人間が見ても意味がないデータをソースに貼り付けるのはいやだ)。バイナリ辞書をCに変換して利用する例も紹介されているけど。Haskellでバイナリデータ(yuga/gist:8255552)Data.Textに対応したバイナリライブラリがなさそうなんだなということが分かりました。Overflow)file-embedパッケージの存在を知りました。出版される前の本の内容は、通常は著者や編集者に代表される「制作サイド」の人間にしか読まれない。機能を使うのが一番お手軽です。このスタイルでは、数値を指定してさまざまな囲み数字のグリフ(あれば)を呼び出すという便利な機能が提供され...職務経歴書いろいろあって職務経歴書を作成してみることにしました。編集をお手伝いしました。Blogger.自己紹介Unknown詳細プロフィールを。