問題タブ [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.
javascript - JavaScript カリー: 実用的なアプリケーションは何ですか?
私はまだカレーに慣れていないと思います。私はそれが何をするのか、そしてそれを行う方法を理解しています。使うシチュエーションが思い浮かびません。
JavaScript のどこでカリー化を使用していますか (またはそれを使用している主要なライブラリはどこですか)? DOM 操作または一般的なアプリケーション開発の例を歓迎します。
答えの1つはアニメーションに言及しています。のような関数は引数として要素slideUp
をfadeIn
取り、通常はデフォルトの「アニメーション関数」が組み込まれた高次関数を返すカリー化された関数です。いくつかのデフォルトで上位関数を適用するよりも優れているのはなぜですか?
それを使用することの欠点はありますか?
JavaScript のカリー化に関する優れたリソースを以下に示します。
- http://www.dustindiaz.com/javascript-curry/
- Crockford, Douglas (2008) JavaScript: 良い部分
- http://www.svendtofte.com/code/currried_javascript/ (ML に寄り道するので、「ML の短期集中コース」のセクション全体をスキップして、「カリー化された JavaScript の書き方」からやり直してください)
- http://web.archive.org/web/20111217011630/http://blog.morrisjohns.com:80/javascript_closures_for_dummies
- JavaScript クロージャーはどのように機能しますか?
- http://ejohn.org/blog/partial-functions-in-javascript (いつものようにレジグ氏がお金を払って)
- http://benalman.com/news/2010/09/partial-application-in-javascript/
コメントが増えたら追加します。
したがって、答えによると、カリー化と部分適用は一般的に便利な手法です。
高レベル関数を同じ構成で呼び出して頻繁に「改良」する場合は、高レベル関数をカリー化 (または Resig のパーシャルを使用) して、シンプルで簡潔なヘルパー メソッドを作成できます。
language-agnostic - カリー化と部分適用の違いは何ですか?
他の人のカリー化の例はカリー化ではなく、実際には部分適用にすぎないというさまざまな苦情をインターネットでよく目にします。
部分適用とは何か、またはカリー化とどのように違うのかについての適切な説明は見つかりませんでした。一般的な混乱があるようです。同等の例は、ある場所ではカリー化、他の場所では部分適用として説明されています。
誰かが私に両方の用語の定義とそれらがどのように異なるかについての詳細を教えてもらえますか?
python - Python 引数バインダー
引数を Python メソッドにバインドして、後で呼び出すために nullary ファンクターを格納するにはどうすればよいですか? C++ のboost::bind
.
例えば:
f# - F#引数付きの演算子を関数に渡す
部分的に適用された演算子だけを使用して、「2で除算」や「1を減算」などの演算を渡すことができますか。「1を加算」は次のようになります。
何が起こっているのかというと、最初の引数として1が(+)に適用され、2番目の引数としてリスト項目が適用されています。加算と乗算の場合、この引数の順序は重要ではありません。
すべての要素から1を引きたいとしましょう(これはおそらく初心者のよくある間違いです):
最初の引数として(-)に1が適用されるため、の代わりに(list_item - 1)
、を取得し(1 - list_item)
ます。正の値を減算する代わりに負の値を加算するように書き直すことができます。
Arc言語のように、プレースホルダーを表すのような((-) _ 1)
、より表現力豊かな書き方を探しています。_
これ1
により、の2番目の引数に-
なるため、List.mapでは。と評価されlist_item - 1
ます。したがって、リストにマップdivide by 2
する場合は、次のように記述できます。
これを行うことはできますか、それとも使用する必要があります(fun x -> x/2)
か?プレースホルダー構文に最も近いのは、名前付き引数でラムダを使用することのようです。
scala - メソッド名の後に _ を付ける必要があるのはなぜですか?
_
関数としてメソッドを使用するためにメソッドの後に必要な場合について、私はルールが少し不安定です。Foo
たとえば、次の「 」とNil
「 」に違いがあるのはなぜ::
ですか?
scala - scala 部分関数が部分関数でないのはいつですか?
String から部分関数へのマップを作成しているときに、予期しない動作に遭遇しました。部分関数をマップ要素として作成すると、正常に機能します。val に割り当てると、代わりに呼び出されます。チェックを呼び出そうとすると、エラーが発生します。これは期待されていますか?私は愚かなことをしていますか?をコメントアウトしてcheck()
、呼び出しを確認します。私はscala 2.7.7を使用しています
scala - 部分的に適用された再帰関数
部分的に適用された関数としてfooを作成するにはどうすればよいですか?ここで、すべての再帰呼び出しで名前を渡す必要はなく、単に呼び出すだけfoo(map1)
ですか?
python - Python: なぜ functools.partial が必要なのですか?
部分適用はクールです。functools.partial
ラムダを介して取得できない機能は何ですか?
functools
どういうわけかより効率的ですか、それとも読みやすいですか?
scala - Lift Req オブジェクト
Liftbook には、 apply を使用して Req インスタンスを作成する例があります。
しかし、API ドキュメントを調べると、apply() メソッドが 2 つありますが、この例ではどれがどのように実行されているかわかりません。また、どのように含め/a/b
て/a/b/c
リクエストする方法はありますcase
か?
また、考えられるすべてのリクエストを 1 つに列挙する方法はありますかcase
: 推測 : case Req(List("api", "expense", eid), "", {GetRequest,PostRequest})
?
回答ありがとうございます。
haskell - ハスケル-カリー化?さらに説明が必要
だから何かのような
なぜこれが機能するのですか?カリー化部分。なぜ変数がないのですか?