私は、Edward Kmett による machines モジュールをいじっていますが、あちこちで少し混乱しています。質問をする最良の方法は、おもちゃのユースケースを提供することだと思いました。以下で説明します。
マシン 1 と 2 は、Y 型の 2 つのプロングに配置されています。
マシン 1 は int のリストをパラメータとして取り、それを下流にプッシュします。マシン 2 は、文字のリストをパラメータとして取り、それを下流にプッシュします。
マシン 3 は、 から始まる内部状態を保持しmempty
、その後mappends
、何らかの条件で Y ベースからいずれかのマシンから受け取る要素 (両方ではない) を保持します。次に、マシン 3 が現在の状態を取得し、ダウンストリームにプッシュします。
マシン 4 は、受け取った要素をコンソールに出力します。
これまでのところ、私はこれを持っています:
y1 :: PlanT k [Int] m ()
y1 = yield
y2 :: PlanT k [Char] m ()
y2 = yield
しかし、y1 と y2 を組み合わせる方法がわかりません。または、Process.hs によってエクスポートされたストック コンビネーターの 1 つを使用するのではなく、状態を非表示にする任意のプロセスをロールします。
提案によると、machines パッケージへのリンク: http://hackage.haskell.org/package/machines
そして、それが何をするかについて非常に高レベルの説明を提供するpdf:https ://dl.dropboxusercontent.com/u/4588997/Machines.pdf