我正試圖學習smlnj,並且在摺疊功能時遇到問題。在SML中使用摺疊
我想要做的是編寫一個函數,選擇,使用摺疊模式,並採用一個函數和一個列表。它會將列表的頭部放入函數中,以確定它是否將該元素添加到列表中。這是我的意思的一個例子。
select (fn x => x mod 2 = 0) [1,2,3,4,5,6,7,8,9,10];
val it = [2,4,6,8,10] : int list
所以,這裏是我迄今爲止...
fun select f l = foldl (fn (x,y) => if (f(x)) then x else 0) 0 l;
這顯然不正常。它只是返回10.我確定我需要使用op ::以某種方式使這個工作,但我無法弄清楚。我的想法是,它應該看起來像這樣...
fun select f l = foldl (fn (x,y) => if (f(x)) then op:: else []) [] l;
但這不起作用。任何幫助,將不勝感激。謝謝!
謝謝!這完美地爲我清除它。 – MCR 2012-03-09 15:49:34