Sml 需要帮助理解咖喱吗

Sml 需要帮助理解咖喱吗,sml,Sml,下面是我从这本电子书中挑选的一个例子(http://www.cs.cornell.edu/riccardo/prog-smlnj/notes-011001.pdf) 我如何解释这个函数。Curry将类型为“a*”b->“c”的函数f作为参数。我不能理解“=”后面的部分。什么是结合顺序 下面是另一个例子: fun add’ (x:int) (y:int):int = x + y; 这是如何解析的 Wikipedia说,“Curry是一种转换函数的技术,该函数采用多个参数(或一个n元组的参数),可

下面是我从这本电子书中挑选的一个例子(http://www.cs.cornell.edu/riccardo/prog-smlnj/notes-011001.pdf)

我如何解释这个函数。Curry将类型为“a*”b->“c”的函数f作为参数。我不能理解“=”后面的部分。什么是结合顺序

下面是另一个例子:

fun add’ (x:int) (y:int):int = x + y;
这是如何解析的

Wikipedia说,“Curry是一种转换函数的技术,该函数采用多个参数(或一个n元组的参数),可以作为一个函数链调用,每个函数都有一个参数(部分应用程序)”。哪个是单个参数:多个参数中的第一个还是最后一个?

fn(x:'a)=>fn(y:'b)=>f(x,y)
被解析为
fn(x:'a)=>(fn(y:'b)=>f(x,y))
。有一个函数,它接受一个类型为a的参数x,然后返回另一个函数,它接受一个类型为b的参数y。然后,另一个函数返回调用
f(x,y)
的结果

fun foo x y=…
val foo=fn x=>fn y=>…
的语法糖,所以同样
foo
是一个函数,它接受一个参数x,返回另一个函数,接受一个参数y


类似地,调用
foo 12
将被解析为
(foo 1)2
,也就是说,它使用参数1调用函数
foo
,然后使用参数2调用结果函数。

我在haskell中也有同样的问题。因此,这可能会帮助您@Matt:我在阅读后变得更加困惑:)谢谢您的链接。@sepp2k:我刚刚开始使用SML。你能推荐一个我可以使用的好资源(书,在线材料)吗。
fun add’ (x:int) (y:int):int = x + y;