私は現時点でsmlnjを勉強しようとしており、折り畳み機能に問題があります。SMLの折り畳みを使用
私がしようとしているのは、折りたたみパターンを使用して関数とリストを取り込む関数selectを書くことです。リストの先頭を関数に渡して、その要素をリストに追加するかどうかを決定します。ここに私が意味するものの例があります。
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