関数型プログラミングに関する大学のコースがあり、SMLを使用しています。試験の準備として、私は解決策のない古い試験セットのいくつかに取り組んでいます。
私が本当に問題を抱えている唯一の質問の1つは、次の質問を使用していfoldl
ます。
プログラムのスケルトンについて考えてみましょう。funaddGtkxs = List.foldl(...)... xs; addGt k xsがxs内の要素の合計であり、kより大きいように、2つの欠落している部分(ドットで表されます...)を入力します。たとえば、addGt 4 [1、5、2、7、4、8] = 5 + 7 + 8 = 20
これは本当に簡単なことだと思いますが、foldlとfoldrの機能を理解するのは非常に困難です。
私が今持っているのは次のとおりです(私のコンパイラに聞いたら、これは非常に間違っているようです!):
fun addGt(k,xs) = List.foldl ( fn x => if x > k then op+ else 0) 0 xs;
この質問について助けていただければ幸いです。またfoldl
、foldr
機能に光を当てる非常に短いコメントかもしれません。