3

だれかカレーの概念を説明してくれませんか。私が主に学んでいるのは、関数型言語の紹介のために「最新のプログラミング言語」クラスで ML を学んでいるためです。

特に、次の例を使用できます。

    -fun g a = fn b => a+b;
      val g = fn: int -> int -> int
    -g 2 3;
      val it = 5 : int

これらのパラメーターがどのように渡されるのか、またはそもそもそれについて考える方法さえ混乱しています。

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

4

1 に答える 1

4

この場合、カリー化を明示的に行うため、理解しやすいはずです。

関数定義を読むと、次のように (言い換えて) 書かgれていaますfn b => a+b

つまり、 を呼び出すとg 2、関数 が返されますfn b => 2+b。そのため、 を呼び出すとg 2 3、実際には(g 2) 3;が呼び出されます。つまり、最初に上記の関数を取得し、次にこの関数を value に対して使用して3、 を生成し5ます。

カリー化とは単純に、関数を複数の「段階」で作成し、それぞれが入力を受け取り、新しい関数を生成するという概念です。SML にはこのための構文糖衣がgあり、以下と同等になります。

fun g a b = a + b;
于 2012-10-16T07:03:36.800 に答える