問題タブ [currying]

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

function - 暗黙のScala関数型リテラル

これがすでに他の場所で尋ねられているなら、私を許してください。関数値と暗黙のパラメーターに関するScala構文の質問があります。

私はScalaのカリー化機能で暗黙を使用することに慣れています。たとえば、sum関数があり、2番目の引数を暗黙的にしたい場合:

関数値構文を使用してこれを行う方法はありますか?暗黙の値を少し無視して、私は通常、次のようなカリー化された関数値を記述します。

ただし、2番目のアプローチの関数シグネチャは大きく異なります(カリー化は明示的に表現されています)。暗黙のキーワードをbに追加するだけではあまり意味がなく、コンパイラも文句を言います。

さらに、関数値を取得するための最初のアプローチからの合計を部分的に適用すると、同様に問題が発生します。

これにより、暗黙のパラメーターを持つ関数は、関数値が後で適用されるときではなく、関数値が作成されるときに決定されたパラメーターを持っている必要があると私は信じています。これは本当に本当ですか?関数値で暗黙のパラメーターを使用できますか?

助けてくれてありがとう!

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

scheme - 計画中のカレー

私はこのcurry機能を持っています:

みたいだと思います(define curry (f a b))

consElem2All私の課題は、を使用して関数を書くことです。これは次のcurryように機能するはずです

私は通常の方法でこの関数を書きました:

しかし、それを で変換する方法がまだわかりませんcurry。誰でも私を助けることができますか?

前もって感謝します

ベアツク

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

functional-programming - 関数型プログラミングにおけるカリー化の価値は何ですか?

カリー化の概念と使用方法は知っていますが、実際にどのような価値があるのでしょうか。

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

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

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

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

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

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

haskell - カレーはどのように機能しますか?

私はHaskellとFP全般に非常に慣れていません。カリー化とは何かを説明する多くの著作を読みましたが、それが実際にどのように機能するかについての説明は見つかりませんでした。

ここに関数があります: (+) :: a -> (a -> a) If I do なら(+) 4 7、関数は4を受け取って返す関数を受け取っ7て返します11。しかし、どうなり4ますか?その最初の関数は何をし4ますか? とは何(a -> a)ですか7

より複雑な関数について考えると、事態はさらに混乱します。

そのパラメータを何と(Int -> Int)比較しますか? パラメータは 1 つしか必要ありませんが、実行するには 2 つ必要ですm > n

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

functional-programming - Haskell 関数定義構文

私は次の方法でリストの連結を行っています(GHCを使用した例):

上記の定義が機能する理由と方法を説明してください。これは機能しません。

コードの最後の行は意図的に許可されていませんか (コンストラクトが混乱する可能性がある、役に立たないなどの理由で)、それともより深いもので、おそらくカリー化に関連しています...

私はこれにいくつかの光を当てることができることを願っています, それは本当に私を困惑させます:/

LATER EDIT:以下の説明に加えて、この問題に関する良い情報源がChap . 4 「 Real World Haskell」という本からの「Functional Programming」。この本はオンラインで無料で入手できます。

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 投票する
3 に答える
560 参照

haskell - Scheme でのマップのカリー化

Haskell の構文を理解しています。

"play-note" という関数をカリー化 (部分的に適用) し、1 つの引数を "手動" で渡し、2 つ目の引数をマップで渡したいと考えています。

Haskell で書けるとしたら、次のように言います。

スキームでは、これが私が持っている最高のものです:

スキームバージョンは「コンパイル」しますが、私が期待することをしません(最初の引数をカリー化し、次に2番目の引数をカリー化します)。ヘルプ?ありがとう!

編集:
私の問題の本質は、次のコードが正しい結果を生成するように、2 つの引数を取る関数を定義できないことです:

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

scala - Scala、カリー化、オーバーロード

次のものがあるとします。

Scalaはそのような表現を許可していません。私が見る限り、これの理由は、foo( "asdf")が明確に定義された型を持っていないためです(Int=>IntまたはDouble=>Intのいずれかです)。

そのような「ポリタイプ」関数が許可されるべきではない理由はありますか?

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

function - Haskellには可変個引数関数/タプルがありますか?

このuncurry関数は、次の2つの引数を取る関数に対してのみ機能します。

任意の数の引数を持つ関数をアンカリーしたい場合は、別々の関数を書くことができます。

しかし、これはすぐに面倒になります。これを一般化する方法はありますか?1つの関数を書くだけで済みますか?