次の Haskell 型定義があります。
import Data.Sequence(Seq, length)
import Data.ByteString.UTF8(ByteString)
type StringSeq = Seq ByteString
StringSeq
で厳密な評価を強制したい型の式がありdeepseq
ます。したがって、のインスタンスを定義する必要がありますNFData
。私は次のことをしました:
import Control.DeepSeq(NFData, deepseq)
instance NFData ByteString
instance NFData a => NFData (Seq a) where
rnf s = rnf (length s)
そこで、シーケンス自体の評価を強制するために、シーケンスの長さを計算します。これは機能しているように見えますが、これは正しい実装ですか? より良いものはありますか?シーケンスの長さを計算するとオーバーヘッドが大きくなりすぎませんか?