我得到了這兩個問題對於這個功能: fun funion([(x:int list,y:bool list)]) =
let
fun join(nil,final) = final |
join(x::xs,final) = join(xs,union(x,final)) |
join(_,final) = final
in
join([(x,y)],(nil,nil))
假設我有一個SML簽名ALPHA。但我也有多個結構/函子alpha1,alpha2等,我希望與ALPHA一起使用。我的問題是,如果我有一個結構在這些模塊之外執行單元測試,我將如何單獨測試ALPHA簽名而不必指定我正在使用的結構? 爲了把事情的角度,這裏是一些代碼: signature ALPHA =
sig
val func1
val func2
end
struct
作爲新SML,使用SML NJ我匿名函數行爲的功能識別功能的這種行爲: - fun test g= fn x=>x;
val test : 'a -> 'b -> 'b = _fn
- test 1 2;
val it : int = 2
- test 1;
val it : '1 -> '1 = _fn
是這樣嗎,該解釋器使用unit爲數據類型的輸入參數g ,如果在函數的調用中沒有
這是從教學的例子來說明CPS和尾遞歸: fun sum [] k = k 0
| sum (x::xs) k = sum xs (fn y=>k(x+y));
我理解如何匿名函數fn y=>k(x+y)將正確總結輸入列表中的元素問題。 據我所知,匿名函數意味着一個帶有一個參數y的新函數,其中函數體調用原函數k,參數爲y+x。 如果我調用sum [1,2,3,4,5] (fn x=>x