5

私は、イテレーター (F#: シーケンス) を使って機能的なことを行うための Python の itertoolsに慣れていて、非常に便利なので、F# または一般的に使用されるライブラリーに同等のものがあるかどうか疑問に思いました。

私にとってのトップツールは次のとおりです。

  • product : デカルト積、ネストされた for ループと同等
  • 組み合わせ
  • 順列
  • 時間がかかる
  • ドロップホワイト
  • chain : 複数のイテレータをチェーンして新しい長いイテレータにする
  • 繰り返し* : 繰り返し(5) -> 5, 5, 5...
  • count* : count(10) -> 10, 11, 12...
  • サイクル* : サイクル([1,2,3]) -> 1,2,3,1,2...

* これら 3 つは F# でモナドを生成すると思いますか? それらをどのように無限にしますか?

F# の順列に関するこの質問を見て、それがライブラリの一部でもなく、言語に組み込まれていないことに驚いたので、質問するように求められました。

4

1 に答える 1

5

積、組み合わせ、順列などの関数を含む一般的に使用されるライブラリがあるかどうかはわかりませんが、あなたが言及した他のものはすでにモジュールに含まれているSeqList、問題なく実装できますSystem.Linq.Enumerable

  • takewhile->Seq.takeWhile
  • dropwhile->Seq.skipWhile
  • chain->Seq.concat
  • repeat->Seq.initInfinite
  • count(10)->Seq.initInfinite ((+) 10)
  • cycle([1, 2, 3])->Seq.concat <| Seq.initInfinite (fun _ -> [1; 2; 3])

また、優れた FSharpx ライブラリをチェックすることもできます。これには、コレクションなどを操作するための便利な関数が多数含まれています。

于 2013-04-12T00:27:39.313 に答える