自分がハマったのでメモ。
Data.Conduit.Network
のserverSettings
関数は引数にHostPreference
を要求するのだが、HostPreference
のデータコンストラクタはData.Streaming.Network
からエクスポートされておらず使うことができない。Data.Streaming.Network.Internal
を直接インポートすれば使えるが、とても見栄えが悪い。 Data.Conduit.Network
の説明には文字列("*"
など)を引数に使うようなことが書かれているが、型エラーでコンパイルが通らない。
解決には、GHC拡張のひとつOverloadedStringsを使えばよい。プラグマ{-# LANGUAGE OverloadedStrings #-}
をソースコードの冒頭に記述する。
この拡張は、コンパイル時にGHCが文字列の型エラーを検出すると、あるべき型がData.String
のIsString
型クラスのインスタンスであるとき、fromString
メソッドを暗に呼んで型を変換してくれる(したがって、fromString
メソッドを陽にインポートして使えば拡張を使わずとも実装できる)。
恥ずかしながらData.Streaming.Network
のエクスポートのミスだと思って作者のSnoyman氏に問い合わせたところ、1分で返事が来て解決した。Snoymanは神。