問題タブ [fold]

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.

0 投票する
1 に答える
85 参照

mercurial - Mercurial-リポジトリ自体ではなく、サブリポジトリを含むリポジトリ内のすべてのファイルを取得します

これは可能ですか?

私がやりたいことを簡単に説明するには:

サブリポジトリ「B」を持つリポジトリ「A」があります。ペアのコピーが2つあります。

1つのコピー(これをスモールコピーと呼びます)では、「A」にはチェンジセットA1〜A5があり、「B」にはチェンジセットB1〜B20があります。

もう1つの(大きな)コピーでは、「A」にはチェンジセットA1〜A10があり、「B」にはチェンジセットB1〜B30があります。

私がやりたいのは、大きなリポジトリからすべてのファイルを取得し、それらをチェンジセットA6およびB21として小さなリポジトリにコミットすることです。次に、それをサーバーにプッシュします。(大きなリポジトリはサーバー上に存在しないため、競合が発生することはありません。)

この領域のツールは存在するようです。たとえば、ここを参照してください。問題は、提案された方法のいずれかがサブリポジトリでうまく機能するかどうかわからないことです。

0 投票する
2 に答える
1253 参照

map - Map.make.fold が List.fold_right (非末尾再帰) に似ているのはなぜですか?

Ocaml の折り方に関する素朴な質問: Map.make.fold が List.fold_left ではなく List.fold_right のように設計されている理由を説明してください。fold_right は tail_recursive ではありませんか? Map.make.fold_left と Map.make.fold_right があったはずですか?

0 投票する
2 に答える
2202 参照

api - Scalaでfoldが次のタイプになるのはなぜですか?

foldが不変に対して定義される方法を見ていました。Set:

ただし、foldLeftは次のように定義されます。

foldLeftと同じように、foldが返すコレクションのタイプを変更できることを期待していたので、これは少なくとも一見すると奇妙に見えます。

これは、foldLeftとfoldRightが、要素が折りたたまれる順序について何かを保証しているためだと思います。foldによって与えられる保証は何ですか?

0 投票する
6 に答える
26459 参照

html - VimでHTMLタグを折りたたむ/展開する方法

VimでHTMLタグを折りたたむためのプラグインはありますか?
または、htmlタグを折りたたんだり展開したりするためのショートカットを設定する別の方法がありますか?
インデントフォールディングと同じように、htmlタグをフォールド/アンフォールドしたいと思います。

0 投票する
3 に答える
3307 参照

scala - Scala ベクトルの折り畳み構文 (/: および :\ および /:\)

誰かがどのようにいくつかの例を提供できますか

/: :\/:\

実は慣れ?reduce / fold メソッドへのショートカットだと思いますが、Scala ドキュメントで実際にどのように使用されるかについての例はなく、Google で検索したり StackOverflow で検索したりすることはできません。

0 投票する
2 に答える
9040 参照

recursion - fold_left/rightを使用してOCamlのリストを反転する

更新-解決策

彼の助けをくれたjacobmのおかげで、私は解決策を思いついた。


私はOCaml(クラス用)での再帰のさまざまな方法について学び、いくつかの演習では、さまざまな再帰スタイルを使用してリストを逆にする関数を書いています。

今、私はを使って逆関数を書き込もうとしていますList.fold_leftが、行き詰まっていて理解できません。折りたたみを使用してこの逆関数をどのように記述しますか?

また、関数型プログラミング、さまざまなタイプの再帰、高階関数などについての参考資料があれば、リンクをいただければ幸いです:)

0 投票する
5 に答える
7963 参照

list - 無限リストの左右折り畳み

Learn You A Haskellからの次の一節に問題があります(素晴らしい本です。それを否定するのではありません)。

大きな違いの 1 つは、右の折り畳みは無限リストで機能するのに対し、左の折り畳みは機能しないことです! 端的に言えば、ある時点で無限リストを右から折りたたむと、最終的にリストの先頭に到達します。しかし、ある点で無限リストを取り、それを左から折りたたもうとすると、決して終わりに達することはありません!

私はこれを理解していません。無限リストを右から折り畳もうとすると、無限の点から開始する必要がありますが、これは実際には起こっていません (これを行うことができる言語を誰かが知っている場合は、教えてください:p )。少なくとも、Haskell の実装によれば、そこから開始する必要があります。Haskell では、foldr と foldl は、リスト内のどこから折り畳みを開始するかを決定する引数を取らないためです。

無限リストを取得し、定義されたインデックスから直接折りたたみを開始すると、最終的に終了することは理にかなっているからです。左折からどこから始めても構いません。無限に向かってフォールドします。ただし、foldr と foldlはこの引数を取らないため、引用は意味がありません。Haskell では、無限リストの左折と右折の両方が終了しません

私の理解は正しいですか、それとも何か不足していますか?

0 投票する
1 に答える
1563 参照

functional-programming - OCamlの「ブレイク」は折りたたまれていませんか?

List.fold_left2を使用して、リストが回文であるかどうかを確認する関数があります。(フォールドの使用はオプションではありません。これは宿題の問題です。)

しかし、私はそれを最適化したいと思います。不一致が1つ見つかったらすぐに「false」を返す最良の方法は何ですか?

例外をスローしたくないのですが、それが最善の答えかもしれないと思います。また、匿名関数を次のように変更することも検討しました。

0 投票する
4 に答える
2895 参照

haskell - foldlはどのように怠惰ですか?

Haskellには、、、 についての良い質問と回答がたくさんあります。foldlfoldrfoldl'

だから今私は知っています:
1)foldl怠惰です
2)foldlスタックを爆破する可能性があるので使用しないでください
3)foldl'厳密なので代わりに使用してください(ish

評価方法foldl
1)大量のサンクが作成されます
2)Haskellがサンクの作成を完了した後、サンクが削減され
ます3)サンクが多すぎる場合はスタックがオーバーフローします

私が混乱していること:
1)なぜすべてのサンクの後に削減が発生しなければならないのですか?
2)なぜfoldl同じように評価されないのfoldl'ですか?これは単なる実装の副作用ですか?
3)定義から、末尾再帰を使用して効率的に評価できるようにfoldl見えます-関数が実際に効率的に評価されるかどうかをどのように判断できますか?プログラムをクラッシュさせたくないのであれば、Haskellでの評価の順序について心配し始めなければならないようです。

前もって感謝します。の評価についての私の理解が正しいかどうかはわかりませんfoldl。必要に応じて修正を提案してください。


更新:私の質問への答えは、正規形、弱い正規形、および頭の正規形、およびそれらのHaskellの実装と関係があるようです。
ただし、結合関数をより熱心に評価すると、別の結果(クラッシュまたは不要な評価)が発生する例をまだ探しています。

0 投票する
4 に答える
2454 参照

scala - BigDecimal のリストを左に折りたたむ方法は? (「オーバーロードされたメソッド + 適用できません」)

BigDecimal の List に対して短い関数 sum-function を書きたいと思い、次のようにしてみました:

しかし、私はこのエラーメッセージを受け取りました:

代わりに Int を使用すると、その関数が機能します。これは、BigDecimal の演算子のオーバーロードが+. BigDecimal の適切な回避策は何ですか?