に私の同僚をカリー化実行高階関数を実装:は、次のように私に質問を送ったScalaの
は、あなたの関数の 署名がようである、カリー化を行い、HOF(高階関数)を実装します次の次のよう
def curry[A,B,C](f:(A,B) => C) : A => B => C
同様
は、uncurrying行う機能を実装:
def uncurry[A,B,C](f:A => B => C): (A,B) => C
私はカリー化を理解する方法を使用すると、複数のパラメータを取る機能を持っている場合は、結果を得るまで、あなたが繰り返しPARAMATERSのそれぞれに関数を適用することができるということです。
したがって、f:(A,B) => C
の行に沿ったものはA => f(A,_) => f(B)
になりますか?
そしてuncurryingは、次のように一つの関数の中に、このアプリケーションを統合するために、次のようになります。
f:A=>B=>C
はf(A,B)
でしょうか?
多分私はここの構文で混乱しているかもしれませんが、もし誰かが私がここで紛失していることを指摘できれば素晴らしいでしょう。何を知りたいのですが、実際の実装のほかに -
おかげ
説明をありがとう。これは非常に実用的な例です。コンパイラがa => b => f(a、b)のような式をどのように評価するかを考えようと全部混乱しているだけです。 –
私はアップデートを投稿しました。それが役立つかどうか私に教えてください。 –
ありがとうございます。今ははるかに明確です。私はこれを答えとしてマークしています。 –