問題タブ [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 に答える
803 参照

scala - なぜscalaは部分的なメソッドでタイプを推測できないのですか?

この例を参照してください。

コンパイルできません。部分メソッドに型を追加する必要があります。

なぜscalaはメソッドの2番目のパラメーターが何であるかを知らないのhelloですStringか?

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

scala - Option の type のメソッドから部分的に適用された関数を生成する

GUIを書いているとします

ここに画像の説明を入力

フレームには現在の Kitteh のフィールドがあります。これは、Optionまだ定義されていないか、ユーザーが無効なものを作成しようとした可能性があるためです。

Kittehユーザーが Create を押したときに安全に作成したい

私の GUI には、同様のことを行う 2 つのボタンがあります。疑似コードでは、両方を行う必要があります

詳細は気にしないでください。ポイントは、コードの重複があるため、両方のボタンから呼び出すことができる共通のメソッドを作成したいということです。唯一の違いは、実行する必要がある Kitteh のメソッドです。

currentKittehではない場合Option、共通メソッドは次のような署名を持つことができます

たとえば、これで呼び出すことができます

しかし、実際にはオプションなので、どうすればこれを実装できますか?

currentKitteh が定義されているかどうかを確認し、各ボタン.getのメソッドを呼び出す前にa を実行することもできますが、このチェックをメソッドに残す別の方法はありますか? つまり、 が与えられた場合、(存在しない可能性がある)オブジェクトのメソッドから部分関数を指定することは可能ですか?savesaveOption[A]A

(この質問が理にかなっていることを願っていますが、複雑な例にもかかわらず)

編集: おまけの質問: の代わりにOption[Kitteh]を使用した場合はEither[Throwable, Kitteh]?

update : 警告ダイアログを表示するために疑似コードに追加された追加の行: 理想的には、save保存する有効な Kitteh がない場合にユーザーに警告されるように、メソッドを常に呼び出す必要があります。

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

scala - 逆結合インフィックス表記を使用したカリー化された関数の部分適用の構文

言い換えれば、これがコンパイルされるべきではない正当な理由はありますか?

以下にいくつかの回避策を示します。

しかし、私の質問は主に一般的な適切な構文に関するものです。

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

c++ - 1つの引数を固定値に設定することにより、n引数関数から(n-1)引数関数を取得することは可能ですか?

C++ では、n 番目の引数の値を何らかの値 (実行時に決定される) に設定することで、n 引数を取る関数から (n-1) 個の引数を取る関数を取得できるかどうか疑問に思っていました。

たとえば、次のようなことをしたいと思います。

概念的にfooは、 は によってインデックス付けされた関数cのファミリ、つまり関数のファミリ(ここでは「foo_c」を「foo subscript c」と読みます) であり、それぞれへのポインタを引数としてfoo_c (float a, float b)に渡したいと考えています。foo_cbar

これはC++でまったく可能ですか? 私の知る限り、これは上記の関数ポインターでは不可能です。このようなことを行う他の方法はありますか?

関数テンプレートを作成することを簡単に検討しfooましたが、実行時に3番目の引数を設定したいので、これは機能しません。

明白な解決策はもちろん、3 番目の引数としてbartype を受け取るように修正することですが、これではコードの再利用性が大幅に低下します (そして洗練されていないように見えます)。float f(float q, float r, float t)他の関数も同様に渡したいと思いbarます。その中には、引数を 2 つ、3 つ以上、または異なる型の引数しかとらないものもあり、それらを に渡す前に何らかの方法で固定値に設定する必要がありますbar

barこの場合、 の行に沿ってテンプレート関数を作成し、 のtemplate <typename T, typename S> float bar(float x, float y, T f(float a, float b, S param), S parameters)ようなものを使用して呼び出すことができるかどうかを完全に理解することはできませんでしたbar <double *(float, float, float), float> (123, 456, function, parameters)。これらの線に沿ったものはまったく機能しますか?

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

java - Java関数から部分適用関数を作る

私はこのようなJava関数を持っています

これから部分適用関数を作り、Object...部分に何らかの引数を指定したいと思います。これが可能かどうかはわかりません。私は試した

として使用したい

しかし、これはうまくいかないようです。また、このオブジェクトは... 技術的な名前を持っていますか?

EDIT:コードを少し変更し(私の間違い.. val nameを入れるのを忘れていました)、必要な使用例を追加します。

EDIT2:私の主な質問は、 vararg で部分的に関数を適用できることだと思いますか?

EDIT3:エルボウィッチの提案に感謝します。私が思いつく

完全に正常に動作します

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

c# - 戻り値の部分適用に相当するものはありますか?

papplyが入力関数よりもアリティの低い関数を返す場合、入力関数の値に関係なく値を返す関数を返す同様のFP操作はありますか?もしそうなら、C#に相当するものはありますか?

void式に変換したいものを返すC#関数について考えてみます。これは、のような無名関数ラッパーを作成することで何度も行ってきました(args) => f(args); return null;

C#では、

これは理想的には「いいね」と呼ぶFP.WhatIsMyName(voidfunc)ので、キャストする必要はありません。

Clojureでは、

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

c# - ラムダ式のパラメーターを置き換えます

このコードを検討する:

どうすれば、ととexp0同じ2つの式に変換できますか。のそれぞれを評価するだけではなく、2つの新しい式を取得することに注意してください。exp1exp2exp0Foofoos

[更新]

基本的に、これらの列挙は静的であり、そうでない式を読み取るコードをすでに持っているため、Linq拡張メソッドに渡された式を、列挙内のアイテムごとに1つの式に拡張または「フラット化」できるようにしたいです。Sumパラメータを取ります(そしてそれらを別の言語に変換します)。

MetadataToken特定の属性(この場合はこの属性を持つ)を持つプロパティへの参照としてaを使用しb、C#プロパティを別の言語の変数に関連付ける辞書で使用しています。

0 投票する
12 に答える
19423 参照

python - キーワード引数を取らない関数の 2 番目の引数を部分的に適用できますか?

たとえば、Python 組み込みpow()関数を考えてみましょう。

しかし、xs を 2 乗するにはどうすればよいでしょうか。

取得するため[1, 4, 9, 16, 25, 49, 64]

リスト内包表記の方が簡単なのはわかっています。

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

haskell - アクションの怠惰?(ハスケル)

Learn You a Haskellの第 6 章では、次の関数が紹介されています。

著者は、私が従うのに十分簡単だと思ったその使用例をいくつか挙げています。次に、これ:

どの出力[[3,4,6],[9,20,30],[10,12,12]]

これは遅延評価の例ですか? zipWith' を Scheme に変換しようとしました (以下を参照)。「簡単な」例では動作しましたが、最後の例では動作しませんでした.Haskellの怠惰が違いを生んでいるのではないかと思います.