1

pipesパッケージのチュートリアル[ 1]は、モナド演算子Control.Pipes.Tutorialを使用してパイプコンポーネントを「垂直にスタック」する方法を示しています。>>

Control.Frameでそれを行うにはどうすればよいですか?

たとえば、Control.Frameチュートリアルの定義を使用します。

source1 = fromList [1..10]
source2 = fromList [30..40]

-- combine two sources:

runFrame $ printer <-< (source1 ??? source2)

-- combine two transformers:

runFrame $ printer <-< (take' 3 ??? take' 2) <-< fromList [1..]

>>ここでforを使用し???ても、タイプチェックは行われません。

[1] http://hackage.haskell.org/packages/archive/pipes/latest/doc/html/Control-Pipe-Tutorial.html#g:4

更新:これが私が試したことのペーストです:http://hpaste.org/77986

問題のようです-上記の貼り付けcloseの関数を参照してください。明示的に指定しない場合、bar8フレームは構成可能です。もちろん、私は最終的にそれらを閉じる必要があります。うーん...>>close

4

1 に答える 1

1

AFrameはモナドではなく、インデックス付きモナドです。これは、通常のモナド演算子が機能しないことを意味し、それらのインデックス付きバージョンをインポートする必要があります。チュートリアルによると、これはファイルの先頭に以下を追加することを意味します。

{-# LANGUAGE RebindableSyntax #-}

import Control.Frame
import Control.IMonad.Do
import Control.IMonad.Trans
import Prelude hiding (Monad(..))
于 2012-11-19T10:16:01.213 に答える