获取小于输入的值列表 - ML



我正在尝试创建接受整数"a"和一个列表的代码,并返回列表中小于 a 的每个值的列表。我已经创建了代码,可以确定列表中的第一个数字是否小于"a",但我无法完全弄清楚递归。任何帮助都会很棒!

fun smallethan(a,[]) = [] | smallerthan(a,list) = if hd(list) < a then [hd(list)]; 

非空列表的情况是

  • 如果第一个元素小于 a ,则将该元素放在列表尾部递归得到的元素前面,
  • 否则,结果只是尾巴递归的结果。

由于您显然已经了解了模式匹配,请使用它:

fun less (a, []) = []
  | less (a, x::xs) = if x < a 
                      then x :: less (a, xs)
                      else less (a, xs)

你可以使用过滤器。我测试了下面的代码,它可以工作。

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

最新更新