問題タブ [seq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
f# - Seq モジュールの集約関数
Seq モジュールにいくつかの集計関数を追加しようとしています。ここにリストされている関数のいくつかの実装を見ていました。
https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/seq.fs
免責事項の 1 つは、「この関数は、シーケンスが繰り返されるとすぐに最初のシーケンス全体を消化するシーケンスを返します。結果として、この関数は大規模または無限のシーケンスで使用しないでください。」これは、GroupBy などの多くの関数に当てはまります。
最初の質問: 大きなシーケンスを効率的に処理できる集約関数を作成する方法はありますか? 「大」が主観的であることはわかっています。そのような関数を書くための一般的なパターンを探しています。
2 番目の質問: Dictionary などのコレクション (集約関数内で定義されているもの) が効率的にガベージ コレクションされるようにするにはどうすればよいですか? 範囲外になったときに辞書を収集する必要があることは理解していますが、それを明示的に示す方法はありますか? 辞書が関数内にとどまるようにスコープされていることを考えると、そのどちらでも .Clear() を呼び出すことはできませんか?
map - seq を個々のスカラーに展開する
map によって生成されたレイジー seq のメンバーを個別の引数として別の関数にフィードしたいと考えています。(怠惰な) seq をスプライスする関数はありますか?
f# - F# で seq を分割する
要素の属性によって分割する必要がseq<a>
あります。seq<seq<a>>
この属性が特定の値と等しい場合、その時点で「分割」する必要があります。FSharpでそれを行うにはどうすればよいですか?
そのアイテムで分割する必要があるかどうかにかかわらず、bool を返す「関数」を渡すとよいでしょう。
サンプル: 入力シーケンス: seq: {1,2,3,4,1,5,6,7,1,9}
1 に等しい場合、すべての項目で分割する必要があるため、結果は次のようになります。
join - 属性によってseqを別のseqにアタッチするにはどうすればよいですか?
FSharpに一連のseqがあります。述語がtrueに戻ったら、seqを前のseqに結合したいと思います。
サンプル:
seqが1で始まる場合、seqを前のseqに結合したいので、この場合の結果は次のようになります。
seq [seq[2;3;4;1;5;6;7;1;9];seq[2;3;5;7]
]
それを行うための素晴らしい機能的な方法はありますか?
長い計算プロセスをC#からF#に変換し始めたばかりで、ほんの数時間の作業とFSharpの初心者レベルの知識の後でさえ達成できるパフォーマンスの向上に非常に感銘を受けました。
アマゾンから「BeginningF#」という本を購入しました。それは本当に素晴らしいですが、私は主にseqs、lists、maps、collectionsで作業する必要があり、このトピックは必要なほど詳細に説明されていません。誰かが私にこのトピックについての良いリソースをアドバイスしてくれませんか?
事前にThx!
haskell - モナド: seq と >>= の違いは何ですか?
違いは何ですか?seq
より多くの流れ条件を保証しますか?
f# - Seq.Map 文字列->文字列
全て!
このコードの何が問題になっていますか? Seq.Map で何が間違っているのか理解できません。エラー メッセージは次のとおりです。タイプ 'unit' は、タイプ 'seq<'a>' と互換性がありません。
Seq.Map にわかりやすい例はありますか?
PSウィキの例(動作します):
r - 指定された増分ステップでリストを生成するにはどうすればよいですか?
指定された増分ステップ(例:2)でベクトルを生成するにはどうすればよいですか?たとえば、次のように作成するにはどうすればよいですか
scala - Scala-VectorとListを含むリストのListofSeqを推測できないのはなぜですか?
2.8.1 / 2.9.0.1 REPLで次のことを試してみると、最初のエラーが発生します。
これが成功している間:
最初のケースでscalaが推測しようとするタイプは何ですか?構造型のSeqですか?ベクターとリストを統合できないのはなぜですか?これはまだいくつかの不足している機能ですか、それとも自分の足を撃たないようにするためにこの方法(明示的なタイプdefが必要)ですか?
list - シーケンス演算子を含む F# リスト
これらの 2 つのスレッドを見た後: F# には Haskell のテイクと同等のものがありますか? 、F# で N 個の異なるインデックスを持つシーケンスから N 個の要素を取得 します 、リストでシーケンス演算子を使用する最良の方法、またはそれらを使用する場合でも、
私は現在 F# の初心者であり、HtmlAgilityPack から取得した多くのシーケンスを処理する必要があるプログラムを作成しています。Seq モジュールには興味深い演算子がいくつかありますが、それらのスレッドで述べられているように、パフォーマンスに関連して不十分である可能性があり、seq -> list の間で常に変換する必要がある場合、問題解決ではないものでコードが乱雑になります.. . それが最初に F# を学び始めた理由です。
簡単な例は、リストの「N」個の要素を取得する必要がある場合です。
では、これらのシナリオに対処する最善の方法について誰かが光を当てることができますか? Seq.take と Seq.skip を使用してソリューションを実行できますが、これは非常に非効率的であることが知られています。一方、機能を標準ライブラリに組み込み、別のコレクションで同じ概念を使用するために再実装したり、明示的な変換でコードを汚したりするのは残念です。
「list -> seq」と「seq -> list」の間の各変換がパフォーマンスに与える影響をどのように確認できますか?
どうもありがとう。
clojure - Clojure のシーケンスと矛盾していますか?
クロージャ:
何が起こっているかは理解できますが、これは別の方法で機能する必要がありますか?