問題タブ [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.
scala - なぜscalaは部分的なメソッドでタイプを推測できないのですか?
この例を参照してください。
コンパイルできません。部分メソッドに型を追加する必要があります。
なぜscalaはメソッドの2番目のパラメーターが何であるかを知らないのhello
ですString
か?
scala - Option の type のメソッドから部分的に適用された関数を生成する
GUIを書いているとします
フレームには現在の Kitteh のフィールドがあります。これは、Option
まだ定義されていないか、ユーザーが無効なものを作成しようとした可能性があるためです。
Kitteh
ユーザーが Create を押したときに安全に作成したい
私の GUI には、同様のことを行う 2 つのボタンがあります。疑似コードでは、両方を行う必要があります
詳細は気にしないでください。ポイントは、コードの重複があるため、両方のボタンから呼び出すことができる共通のメソッドを作成したいということです。唯一の違いは、実行する必要がある Kitteh のメソッドです。
currentKitteh
ではない場合Option
、共通メソッドは次のような署名を持つことができます
たとえば、これで呼び出すことができます
しかし、実際にはオプションなので、どうすればこれを実装できますか?
currentKitteh が定義されているかどうかを確認し、各ボタン.get
のメソッドを呼び出す前にa を実行することもできますが、このチェックをメソッドに残す別の方法はありますか? つまり、 が与えられた場合、(存在しない可能性がある)オブジェクトのメソッドから部分関数を指定することは可能ですか?save
save
Option[A]
A
(この質問が理にかなっていることを願っていますが、複雑な例にもかかわらず)
編集: おまけの質問: の代わりにOption[Kitteh]
を使用した場合はEither[Throwable, Kitteh]
?
update : 警告ダイアログを表示するために疑似コードに追加された追加の行: 理想的には、save
保存する有効な Kitteh がない場合にユーザーに警告されるように、メソッドを常に呼び出す必要があります。
scala - 逆結合インフィックス表記を使用したカリー化された関数の部分適用の構文
言い換えれば、これがコンパイルされるべきではない正当な理由はありますか?
以下にいくつかの回避策を示します。
しかし、私の質問は主に一般的な適切な構文に関するものです。
c++ - 1つの引数を固定値に設定することにより、n引数関数から(n-1)引数関数を取得することは可能ですか?
C++ では、n 番目の引数の値を何らかの値 (実行時に決定される) に設定することで、n 引数を取る関数から (n-1) 個の引数を取る関数を取得できるかどうか疑問に思っていました。
たとえば、次のようなことをしたいと思います。
概念的にfoo
は、 は によってインデックス付けされた関数c
のファミリ、つまり関数のファミリ(ここでは「foo_c」を「foo subscript c」と読みます) であり、それぞれへのポインタを引数としてfoo_c (float a, float b)
に渡したいと考えています。foo_c
bar
これはC++でまったく可能ですか? 私の知る限り、これは上記の関数ポインターでは不可能です。このようなことを行う他の方法はありますか?
関数テンプレートを作成することを簡単に検討しfoo
ましたが、実行時に3番目の引数を設定したいので、これは機能しません。
明白な解決策はもちろん、3 番目の引数としてbar
type を受け取るように修正することですが、これではコードの再利用性が大幅に低下します (そして洗練されていないように見えます)。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)
。これらの線に沿ったものはまったく機能しますか?
java - Java関数から部分適用関数を作る
私はこのようなJava関数を持っています
これから部分適用関数を作り、Object...部分に何らかの引数を指定したいと思います。これが可能かどうかはわかりません。私は試した
として使用したい
しかし、これはうまくいかないようです。また、このオブジェクトは... 技術的な名前を持っていますか?
EDIT:コードを少し変更し(私の間違い.. val nameを入れるのを忘れていました)、必要な使用例を追加します。
EDIT2:私の主な質問は、 vararg で部分的に関数を適用できることだと思いますか?
EDIT3:エルボウィッチの提案に感謝します。私が思いつく
完全に正常に動作します
c# - 戻り値の部分適用に相当するものはありますか?
papplyが入力関数よりもアリティの低い関数を返す場合、入力関数の値に関係なく値を返す関数を返す同様のFP操作はありますか?もしそうなら、C#に相当するものはありますか?
void
式に変換したいものを返すC#関数について考えてみます。これは、のような無名関数ラッパーを作成することで何度も行ってきました(args) => f(args); return null;
。
C#では、
これは理想的には「いいね」と呼ぶFP.WhatIsMyName(voidfunc)
ので、キャストする必要はありません。
Clojureでは、
c# - ラムダ式のパラメーターを置き換えます
このコードを検討する:
どうすれば、ととexp0
同じ2つの式に変換できますか。のそれぞれを評価するだけではなく、2つの新しい式を取得することに注意してください。exp1
exp2
exp0
Foo
foos
[更新]:
基本的に、これらの列挙は静的であり、そうでない式を読み取るコードをすでに持っているため、Linq
拡張メソッドに渡された式を、列挙内のアイテムごとに1つの式に拡張または「フラット化」できるようにしたいです。Sum
パラメータを取ります(そしてそれらを別の言語に変換します)。
MetadataToken
特定の属性(この場合はこの属性を持つ)を持つプロパティへの参照としてa
を使用しb
、C#プロパティを別の言語の変数に関連付ける辞書で使用しています。
python - キーワード引数を取らない関数の 2 番目の引数を部分的に適用できますか?
たとえば、Python 組み込みpow()
関数を考えてみましょう。
しかし、xs を 2 乗するにはどうすればよいでしょうか。
取得するため[1, 4, 9, 16, 25, 49, 64]
リスト内包表記の方が簡単なのはわかっています。
haskell - アクションの怠惰?(ハスケル)
Learn You a Haskellの第 6 章では、次の関数が紹介されています。
著者は、私が従うのに十分簡単だと思ったその使用例をいくつか挙げています。次に、これ:
どの出力[[3,4,6],[9,20,30],[10,12,12]]
これは遅延評価の例ですか? zipWith' を Scheme に変換しようとしました (以下を参照)。「簡単な」例では動作しましたが、最後の例では動作しませんでした.Haskellの怠惰が違いを生んでいるのではないかと思います.