我有以下的功能和它的工作原理:令行禁止匿名函數在SML
(fn x => x * 2) 2;
但這個不起作用:
(fn x y => x + y) 2 3;
誰能告訴我爲什麼?或者給我一些提示讓它起作用?
我有以下的功能和它的工作原理:令行禁止匿名函數在SML
(fn x => x * 2) 2;
但這個不起作用:
(fn x y => x + y) 2 3;
誰能告訴我爲什麼?或者給我一些提示讓它起作用?
(fn x => fn y => x+y) 2 3;
工程。 fn
根本沒有相同的語法糖來定義fun
具有的咖喱味函數。
在標準ML,函數只能有一個參數,所以使用
(fn (x,y) => x + y) (2,3)
和類型是
fn: int * int -> int
在這個時間(X,Y)和(2, 3)是一個列表結構,
上面貼出的答案是正確的。 SML函數僅需一個參數。其結果是,SML函數可以僅具有兩個輸入類型之一:
1)t = (t1 * t2 * ... * tN)
,對於在某些N
2)t = a
,對於一些a
。
所以,從技術上來說,SML 只有以產品類型或一元類型作爲參數傳遞給函數。人們可以更普遍地認爲這是一種一元類型或某種產品類型的投影。
爲了有譁衆取寵內匿名功能,可隨時將其嵌套對方內線爲: fn x1 => fn x2 => ... fn xN => ...
我認爲這是同樣重要的是知道: fun a = fn x1 => fn x2 => ... fn xN => ...
是較好語法充分擴張:fun a x1 x2 .. xN
當我改變爲這個 (fn(x,y)=> x + y)(2,3); 但爲什麼(fn x y => x * y)2 3;產生一個錯誤 – jjennifer 2010-03-13 02:23:42