問題タブ [foldleft]

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 に答える
581 参照

haskell - foldl はどのように機能しますか?

誰がどのようにfoldl機能するか説明できますか? たとえば、 (1 - (2 - (3 - 0))) を生成するのに対し、(((0 - 1) - 2) - 3) を生成する
ことを理解しましたが、まだいくつか質問があります。 foldr (-) 0 [1,2,3]foldl (-) 0 [1,2,3]

  • 1 番目の例 (foldr/foldl を使用したリストの長さ):
    foldr (\_ acc -> acc + 1) 0 [1,2,3,4,5]予想どおり、5 が生成されます。
    foldl (\_ acc -> acc + 1) 0 [1,2,3,4,5]6 を生成します。:|
    foldl (\_ acc -> acc + 1) 0 [2]3 を生成します。:|
    foldl はこれらの例にどのように反応しますか?

  • 2 番目の例:
    foldr (:) [] [1,2,3,4][1,2,3,4] を生成 - 心配はいりませんが、エラーが 表示さfoldl (:) [] [1,2,3,4]れます:Occurs check: cannot construct the infinite type: a ~ [a]

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

list - scala でのタプル リストのマージ リスト

重複する要素を持つタプル リストのリストがあります。

タプル リストで重複する要素をマージしようとしています。これは、リストから重複するタプルリストをマージするためにfoldleftを使用する作業中のコードです.タプルリストのいくつかの要素を見逃すため、マージは機能していません.各タプルリストには、それらに存在する4つのタプルが含まれています. リスト内の各タプル リストは、スライディング関数を使用してより大きなリストから生成されるため、重複することがよくあります。

ここに私が使用しているサンプルデータがあります:

マージされたリストは次のようになります。

更新 1:

重複: タプルの 2 つのリストに、両方のリストに 3 つ以上の正確なタプルが存在する場合、それらは重複するタプルのリストであると想定されます.しかし、2 つのリストがマージされた場合、違いはありません.両方のリストの整数は同じですが、文字が異なる場合、それらはマージされません。マージ: タプル リストの 2 つ以上のリストが重複している場合にそれらを結合すること。

更新 2: 私は小さな解決策を考え出しましたが、それがどれほど効率的かはわかりません。

したがって、上記のコードを印刷すると、この方法でグループ化されたタプルリストが取得されます。マージする必要がある各タプル グループのインデックスのみを出力しました。

生成された結果: ListBuffer((0,2), (0,3), (1,4), (2,5), (3,6), (4,7), (5,8), (6, 9), (7,10))

これは、使用されたインデックス付きのタプルのリストです

だから今私がしなければならなかったのはinterGrps、2番目の値に基づいてグループをリンクし、最後にインデックスをタプルのリストに置き換えることだけでした..

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

scala - foldLeft on Map - なぜそれが機能するのですか?

これはCourseraコースからのもので、今まで誰も私を助けることができませんでした. 以下の作品は、講義から抜粋したものです。

foldLeftinの署名がMap次のようであることを考慮すると、

署名を理解し、上記の例の使用法にマッピングしようとします。

ゼロ要素zは に対応するtermsので、型は になりますMap[Int, Double]
演算子は、シグネチャを持つものにop対応します。addTerm( Map[Int, Double], (Int, Double) ) => Map[Int, Double]

私には、これは一貫していないように見えます。私は何を間違っていますか?

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

list - リストからfoldLeftで値の位置を見つける方法は?

1 と -1 を含むリストがあります。私が求めている目標は、合計が -1 のときにリスト内の位置を見つけることです。

しかし、私のコードは機能していません。

これが私の試みです(読みやすくするためにコードの間隔を空けました)注:floorIntのリストを保持するvalです。

ここで何が間違っているのか知りたいです。私は本当に、答えそのものよりも理由を求めています。

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

arrays - scala で一連の配列をマージする方法

タイプの値がありSeq[Array[Int]]、単一のArray[Int]. 私は foldLeft がうまくいくと思っていましたが、驚くべきことにそうではありません:

私はこれを行うことができるので、そのエラーは完全な真実のようには見えません:

何を与える?

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

scala - リストを使用したScalaのfoldLeft

次のコード スニペットがあります。

test1.txtファイルが空ではなく、いくつかの値があると仮定しましょう。関数に関する私の質問foldLeftは、なぜこの例が空のリストを返すのですか?関数listの最後にあるを削除するとfoldLeft機能しますか? value の下に空のリストを返すのはなぜfileContentですか?

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

scheme - ラケットを使用してリストから「1」を 1 つだけ検索する

リスト内の 1 の数を使用foldrして検索する方法を見つけました。lambdaただし、if条件またはその他の方法を使用して、リストに 1 しかないかどうかを確認する方法.

count可能であれば、if 条件で値を使用するにはどうすればよいですか?

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

scala - Scala - 集計と foldLeft のパフォーマンス比較

私の理解では、/: は foldLeft と同じであり、リストが「par」を使用して並列コレクションに変換される場合、集約は foldLeft のより高速なバージョンです。私が正しければ、次のコードが :/ と foldLeft がリストの「par」で使用される集計よりも高速であることを示しているのはなぜですか。

大きなリストの要素の合計と要素数を計算し、結果をタプル [Double,Double] に格納しています。

私は次の結果を得ました

1回目の実行結果

2回目の実行結果

cmdを使用してWindows 10でこれを実行しています。/: と FoldLeft はパフォーマンスが似ているように見え、aggregate よりもかなり優れています。実際、1 回目の実行では、par での集計の方が時間がかかりました。ウィンドウの「cmd」(コンソール)がマルチスレッドを活用できないことが原因で問題になる可能性があります(ここで推測するだけです)