1

次の関数定義があるとします。

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 を作成しようとしています。

4

1 に答える 1