タグ付けされた質問 「currying」


14
カレーと部分塗布の違いは何ですか?
他の人々のカレーの例はカレーではないが、実際には部分的な適用にすぎないというさまざまな不満をインターネットでよく目にします。 私は部分的なアプリケーションが何であるか、またはそれがカレーとどのように異なるかについてのきちんとした説明を見つけませんでした。一般的な混乱があり、同等の例がカレー化されている場所と、部分的に適用されているところがあると説明されています。 誰かが私に両方の用語の定義とそれらの違いの詳細を教えてもらえますか?

15
JavaScriptカレー:実用的なアプリケーションは何ですか?
私はまだカレーを食べたことはないと思います。私はそれが何をするか、そしてどのようにそれを行うかを理解しています。自分が使う状況なんて考えられない。 JavaScriptでカレーをどこで使用していますか(またはそれを使用するメインライブラリはどこですか)?DOM操作または一般的なアプリケーション開発の例を歓迎します。 答えの1つはアニメーションについてです。のような関数はslideUp、fadeIn要素を引数として取り、通常、デフォルトの「アニメーション関数」が組み込まれた高次関数を返すカリー化された関数です。それはなぜいくつかのデフォルトで高次関数を適用するよりも優れているのですか? それを使用することに何か欠点はありますか? ここで要求されているように、JavaScriptカレーに関するいくつかの優れたリソースがあります。 http://www.dustindiaz.com/javascript-curry/ クロックフォード、ダグラス(2008)JavaScript:Good Parts http://www.svendtofte.com/code/curried_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(通常どおり、Mr。Resig on the money) http://benalman.com/news/2010/09/partial-application-in-javascript/ コメントに表示されるので、さらに追加します。 そのため、回答によれば、カレーや部分塗布は一般的に便利なテクニックです。 同じ構成で呼び出すことによって高レベル関数を頻繁に「洗練」している場合は、高レベル関数をカレー(またはResigのパーシャルを使用)して、単純で簡潔なヘルパーメソッドを作成できます。

6
Java 8で2つの矢印の付いたラムダは何を意味しますか?
以前にいくつかのJava 8チュートリアルを読んだことがあります。 今、私は次のトピックに遭遇しました: Javaはカリー化をサポートしていますか? ここでは、次のコードが表示されます。 IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b; System.out.println(curriedAdd.apply(1).applyAsInt(12)); この例では2つの要素を合計することを理解していますが、構造を理解できません。 a -> b -> a + b; 式の左側によると、この行は次の関数を実装する必要があります。 R apply(int value); これの前に、私は1つの矢だけでラムダに会いました。
118 java  lambda  java-8  currying 

3
カレーを利用するためのパラメータの順序付け
私は二回、最近のようなハックあまりにも多くのコードがあったので、パラメータの順序を変更するために、コードをリファクタリングしているflipかが\x -> foo bar x 42起こったが。 関数シグネチャを設計するとき、カレーを最大限に活用するのに役立つ原則は何ですか?

4
別の関数を返す関数を作成するにはどうすればよいですか?
Pythonで、make_cylinder_volume(r)別の関数を返す関数を書きたいのですが。返される関数は、パラメータを使用して呼び出すことができh、高さhと半径を持つ円柱の体積を返す必要がありますr。 Pythonの関数から値を返す方法を知っていますが、別の関数を返すにはどうすればよいですか?


3
Scalaでのカリー化の2つの方法。それぞれのユースケースは何ですか?
私が管理しているScalaスタイルガイドで複数のパラメータリストについて話し合っています。私はカリー化には2つの方法があることに気づきました、そして私はユースケースが何であるか疑問に思っています: def add(a:Int)(b:Int) = {a + b} // Works add(5)(6) // Doesn't compile val f = add(5) // Works val f = add(5)_ f(10) // yields 15 def add2(a:Int) = { b:Int => a + b } // Works add2(5)(6) // Also works val f = add2(5) f(10) // Yields …

5
Scalaカリー化と部分的に適用された機能
私はここについてのいくつかの質問があることを認識するものカリー化と部分的に適用される機能がありますが、私は彼らがどのように異なるかについて尋ねています。簡単な例として、偶数を見つけるためのカリー化された関数を次に示します。 def filter(xs: List[Int], p: Int => Boolean): List[Int] = if (xs.isEmpty) xs else if (p(xs.head)) xs.head :: filter(xs.tail, p) else filter(xs.tail, p) def modN(n: Int)(x: Int) = ((x % n) == 0) したがって、これを使用するには、次のように書くことができます。 val nums = List(1,2,3,4,5,6,7,8) println(filter(nums, modN(2)) これは次を返します:List(2,4,6,8)。しかし、私はこの方法で同じことができることを発見しました: def modN(n: Int, x: Int) = ((x % n) …

4
Scalaの複数のパラメーターリストとリストごとの複数のパラメーターの違いは何ですか?
Scalaでは、このような関数を書くことができます(カレー?) def curriedFunc(arg1: Int) (arg2: String) = { ... } curriedFunc2つのパラメーターリストを持つ上記の関数定義と、1つのパラメーターリストに複数のパラメーターを持つ関数の違いは何ですか。 def curriedFunc(arg1: Int, arg2: String) = { ... } 数学的な観点から、これはある(curriedFunc(x))(y)とcurriedFunc(x,y)私は書くことができますdef sum(x) (y) = x + yと同じになりますdef sum2(x, y) = x + y 私はただ1つの違いを知っています-これは部分的に適用された関数です。しかし、どちらの方法も私にとっては同等です。 他に違いはありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.