問題タブ [currying]

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 投票する
3 に答える
4556 参照

scala - Scala - カリー化とデフォルト引数

部分的に適用してカリー化で使用しようとしている 2 つのパラメーター リストを持つ関数があります。2 番目のパラメーター リストには、すべて既定値を持つ (ただし、暗黙的ではない) 引数が含まれます。このようなもの:

これで、次はすべて問題ありません。

今私が定義した場合:

次に、次のことができます。

次のように、「部分的」で一部/すべての引数を省略できない理由を誰かが説明できますか:

「部分的」と書くことは、本質的に「test(1)」と同じように振る舞うべきではありませんか? 誰かがこれを達成する方法を見つけるのを手伝ってもらえますか?

助けてください、私は必死です!

編集- 24 時間以内に自分の質問に答えることができないため、ここに自分の回答を投稿します。

これは、これまでのところ自分でできる最善のことです。

このように動作します...

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

wolfram-mathematica - Mathematicaでカリー化

この構成を使用して、Mathematicaで限定された形式のカリー化を実装することができます。

たとえば、次のようにします。


問題があります:Attributes最初の(セットの)引数にのみ適用されます。検討:

"8 / 4"私の意図は、"3 + 5"リストに戻ることでした。


その結果:

  • この構成に属性を拡張する方法はありますか?

  • これを達成するための別の便利な構成はありますか?

  • 属性以外に、Mathematica内でカリー化を拡張する方法はありますか?

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

scala - カリー化機能のある奇妙なもの

私には理解できないこの奇妙な状況があります。「ProgramminginScala」の本、Ch。9.9。

私がカリー化された関数を持っているとしましょう:

特別なカーリー構文内で1つの引数を使用して呼び出すと、期待どおりに機能します。

ただし、2つのステートメントを入力すると、奇妙なことがわかります。

どうして「こんにちは!」「Before」の前に印刷され、次に「5」が内部に印刷されますか?私は夢中ですか?

0 投票する
17 に答える
46859 参照

javascript - 可変長カリー和関数

次のように機能するには、js sum 関数が必要です。

出来ないと聞きました。+しかし、の前に追加すればsumできると聞きました。のように+sum(1)(2)(3)(4)
これを行う方法のアイデアはありますか?

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

haskell - カリー化を利用するためのパラメーターの順序付け

flip最近、ハッキングが発生したり発生したりするコードが多すぎたため、パラメーターの順序を変更するためにコードを 2 回リファクタリングしました\x -> foo bar x 42

関数シグネチャを設計するとき、カリー化を最大限に活用するのに役立つ原則は何ですか?

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

f# - 逆カレー?

特定の方法で関数を構成したいと思います。これらの 2 つの関数を疑似コードで検討してください (F# ではありません)。

私が F# でやりたいことは、それを理解することです。

コードlet F2 = F1 * 10は F1: と同じ署名を与えval F2 : int -> int -> int、呼び出しF2 2 3は 50: (2 + 3) * 10 になります。それはかなり賢いでしょう...

何が起こるかはかなり異なります。最初の行は期待どおりです。

しかし、2 行目を追加すると、let F2 = F1 * 10F# がスローされます。the type int does not match the type 'a -> 'b -> 'cそれはそれとそのF1を今訴えていrequires member ( + )ます。

もちろん、次のように綴ることもできます。

しかし、今では C# を使ったほうがよかったかもしれません。タプルされた引数は、F# の優雅さの多くを壊します。また、私の実際の関数 F1 と F2 には 2 つだけよりも多くの引数があるため、これはまさに私が F# を使用して回避したかったことと同じです。次のように言うと、より自然になります。

私が(ほぼ)それを行う方法はありますか?

追加のクレジット: これらのエラー メッセージは正確にどうなっているのですか? let F2 = F1 * 102 行目で 1 行目の入力が変わるのはなぜですか?

ご意見ありがとうございます。

ゲルト・ヤン

update 説明されていることを (ほぼ) 実行する 2 つのアプローチ。

タプルを使用するもの。2 行目は少し風変わりに見えますが、問題なく動作します。小さな欠点は、現在カリー化を使用できないか、さらに風変わりなコードを追加する必要があることです。

別のアプローチは、レコードを使用することです。これはもう少し単純明快で、一見すると簡単に理解できますが、より多くのコードと式が必要になります。F# の優雅さの一部を取り除き、C# のように見えます。

0 投票する
8 に答える
3096 参照

haskell - HaskellでLispの適用を定義するにはどうすればよいですか?

この定義は、関数がカレーされるHaskellのような怠惰な言語で許可されるべきではありませんか?

これは基本的に、指定された関数を指定された引数のリストに適用する関数であり、たとえばLispで非常に簡単に実行できます。回避策はありますか?

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

haskell - タプル引数を使用した Haskell での関数合成

時々、次の形式の関数が 2 つあります。

そして、コンポジションgが必要です。h を h' に変更することでこれを解決します。

次のような関数 m を (可能であれば) 示してください。

または、そのような状況に対処する別の方法。ありがとう。

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

scala - Scalaで高次の型を「カリー化」することは可能ですか?

たとえば、2 つの型パラメーターを持つトレイトがあるとします。

より高次の型パラメーターを持つ別のトレイト、たとえば

の型パラメータの 1 つを固定値に置き換えて、パラメータ化にQux使用できるようにしたいと考えていますTurkle

以下に例を示します (Scala では意味をなさないコードの例です!):

この効果を達成する方法はありますか?