我正在尝试创建一个带整数' a'和一个列表,并返回列表中小于a的每个值的列表。我创建的代码可以判断列表中的第一个数字是否小于' a'但我无法弄清楚递归。任何帮助都会很棒!
fun smallethan(a,[]) = [] | smallerthan(a,list) = if hd(list) < a then [hd(list)];
答案 0 :(得分:0)
您可以使用过滤器。我测试了下面的代码并且它可以工作。
filter ((fn x => fn y => (x >= y)) a) lst
没有高阶函数:
fun less (a, []) = []
| less (a , x::lst) = if x < a then [x] @ less (a,lst) else [] @ less (a,lst);
即
fun less (a, []) = [] | less (a , x::lst) = if x < a then [x] @ less (a,lst) else [] @ less (a,lst);
val less = fn : int * int list -> int list
- less (10, [8,9,10,11,12]);
val it = [8,9] : int list
答案 1 :(得分:0)
非空列表的情况是
a
,则将该元素放在列表尾部递归的前面,由于您显然已经了解了模式匹配,请使用它:
fun less (a, []) = []
| less (a, x::xs) = if x < a
then x :: less (a, xs)
else less (a, xs)