1

パイプのチュートリアルでは、ドキュメントでこれについて言及しています。

Effects を犠牲にすると、Haskell の純粋で遅延したリストが得られます。これは、コンポーズ可能な関数を使用して定数空間で変換できますが、効果をインターリーブする必要はありません。

ストリーミングを犠牲にすると、構成可能で効果的な mapM、formM、および "ListT done wrong" が得られますが、リスト全体が最初に処理されてメモリにロードされるまで、単一の結果は返されません。

Streamingしかし、インターレーブ効果を意味しませんか? のときはStreaming、実際にチャンクごとに消費します。それで、チャンクごとに消費している間、効果はインターリーブされませんか?

4

1 に答える 1

2

ストリーミングは実際にインターリーブ効果を意味します。あなたが引用したテキストは、そうではありません。

パイプのドキュメントを言い換えると、次のようになります。

  • 効果がない場合は、怠惰なデータ構造が残るだけです。それらはうまく構成されますが、IO を実行することはできません (回避しようとしている遅延 IO を除く)。
  • エフェクトがあってもストリーミングしない場合は、IO を実行できますが、最後まで結果が得られません。
于 2014-05-08T10:31:20.140 に答える