次の関数定義があるとします。
def print(input:Iterator[String]) : Iterator[String] = {
Iterator.continually {
val item = input.next
item + item
}
}
与えられた入力
List("1", "2", "3").iterator
出力を等しくしたい
List("11", "22", "33").iterator
問題は、 を使用するIterator.continually
と、 を使用してリストを反復処理する必要があることですtakeWhile
。「next on empty iterator」例外を取得せずに、存在する Iterator 関数 (フォールド、フィルターなど) を使用できるようにしたいと考えています。
seq と yield を使用して F# でこれを行うことができます。私はそれIterator.continually
が同じくらい堅牢であることを望んでいました。
F# の例:
seq {
for i in input |> yield i + i
}
PS 一連の関数を作成して Iterator 関数に渡すことができることはわかっていますが、F# でできる方法で Iterators を作成しようとしています。