2

入力を段階的に受け取り、段階的に出力を生成するステートフル アルゴリズムがあります。入力と出力の数は無関係です。つまり、入力は 0 個以上の出力を生成する可能性があります。

私はそれをEnumerateePlay フレームワークで に変換しようとしていますが、始めるのに苦労しています。

私のアルゴリズムには、ローカルの可変状態と同期操作があり、次のようになります

var state = 'foo
var i = input()
while (i != null) {
    if (state == 'foo && i >= 0) {
        // 2 outputs, and change state
        output(i - 2)
        output(i * 3)
        state = 'bar
    } else if (state == 'foo) {
        // error
        error("expected >= 0")
    } else if (state == 'bar) {
        // 0 outputs, and change state
        state = 'foo
    }
    ... // etc
    i = input()
}
if (state != 'bar) { 
    error("unexpected end")
}

mapfilterなどの実装を で研究しましたが、Enumeratee.scalaある程度は理解しています。しかし、もっと複雑なものの独自の実装を作成する方法がわかりません。

このアルゴリズムを に変換する方法を説明/実演していただけEnumerateeますか?

4

1 に答える 1