問題タブ [partial-application]

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

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

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

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

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

f# - 2 つのシーケンスを使用して 2 つのパラメーターを取るメソッドに Seq.map を適用する

私は簡単な DB パフォーマンス テストを作成しており、より多くの練習ができるように F# を選択しました。

measureSelectTimes署名を持つメソッド を作成しましたGuid list * Guid list -> IDbCommand -> TimeSpan * TimeSpan

次に、私はそれを呼び出します:

明確にするために、型で明示的に注釈を付けました。

私が理解できないのはmeasureSelectTimes、ラムダなしで呼び出す方法です。idsこのように を部分的に適用したいのですが、ids |> Seq.map measureSelectTimes部分的に適用された結果の関数を にマッピングする方法がわかりませんcmds。これの構文は何ですか?

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

functional-programming - この部分的なアプリケーションのような関数型プログラミング手法に名前はありますか?

f: (a, b, c = 5, d = 0) -> {...}2 ~ 4 個の引数を取る関数があります。

最後の引数には常にデフォルトを使用し、最初の 2 つの引数には特定の値 (1 と 2 など) を使用する、この関数の「バインドされた」バージョンを渡したいと考えています。つまり、欲しいg: () -> f(1, 2)

部分適用を行うと、 が得られg': (c = 5, d = 0) -> f(1, 2, c, d)ます。つまり、部分的な適用は、g私が望むゼロ引数の性質を強制せず、代わりにg'、0 から 2 の引数を取るものを与えます。

もしあれば、呼ばれたgから取得するためのテクニックは何ですか?f

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

haskell - 部分的に適用された 3 つの引数関数のインフィックス (haskell) の使用方法を知っている人

ブール値 (引数の 1 つ) に基づいて、さまざまな方法で 3 つの引数関数を適用したいと考えています。

チェーンできるように、中置式で適用できるようにしたいと思います(以下の例)。次のようなものですが、実際には機能します。

Bool を 2 番目の変数として持つ必要がありますか? または、他の何か?私はちょっと迷っています。

PS私がこれをやりたかった理由は、オプションの追加機能を持つことでした

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

javascript - JavaScriptでメンバー関数を部分的に適用するにはどうすればよいですか?

私は現在、次のような部分適用関数を持っています。

問題は、たとえば次のように、非メンバー関数に対してのみ機能することです。

次のように、メンバー関数に適用されるカレー関数を言い換えるにはどうすればよいですか。

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

haskell - 左から右に部分適用

私は昨日 haskell から始めましたが、この素晴らしい新世界の岸辺でまだ完全に迷子になっています。今、私は次の問題に遭遇しました:

整数と別の変数に魔法をかける関数があるとしましょう。

ここで、この関数をリストのすべての要素に適用したいと思います。これまでのところ、問題はありません。マッピングは、Python (私の出身地) での毎日のパンとバターでもあるからです。

私が理解している限り、バイナリ関数 makeTuple は整数 n で部分的に適用されるため、x の各要素にマップできる単項関数になります。これまでのところ、すべて順調です。

しかし、makeTuple 関数に次のような別の署名がある場合はどうすればよいでしょうか。

ローマに通じる道はたくさんあります。結果は同じですが、道は異なります。明らかに、マッピングはもう機能しません。関数は Int を期待し、a を取得します。

これは当然のことでした。私の - おそらく Pythonic すぎる - 回避策は、別の関数を使用して、パラメーターをどこに渡すかです。

質問: 部分的に適用されたパラメーターが一番左にない場合に関数を部分的に適用する、関数型の Haskell スタイルの好ましい方法は何ですか?

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

scala - Scalaの複数のパラメータリストとリストごとの複数のパラメータの違いは何ですか?

Scala では、このような (カリー化された?) 関数を書くことができます

curriedFunc上記の2 つのパラメーター リストを持つ関数定義と、1 つのパラメーター リストに複数のパラメーターを持つ関数の違いは何ですか。

数学的な観点からは、これは(curriedFunc(x))(y)ありますcurriedFunc(x,y)が、私は書くことができdef sum(x) (y) = x + y、同じことができますdef sum2(x, y) = x + y

私が知っている違いは 1 つだけです。これは部分的に適用された関数です。しかし、どちらの方法も私にとっては同等です。

他に違いはありますか?

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

functional-programming - 用語:バインドされていない引数が関数である部分適用?

...部分適用(または部分機能適用)とは、関数にいくつかの引数を固定し、より小さなアリティの別の関数を生成するプロセスを指します。

次の名前が特定されているかどうかを確認したいと思います:(擬似コード!

関数型プログラミングでこれに名前はありますか?それとも、バインドされていないパラメータがたまたま関数である部分適用ですか?