我应该更少一个函数(e,L)int * int list - > int list,返回L中小于e的所有元素的列表。我写了这个:
fun less(_, nil) = nil
| less(e, L) =
let
val x::xs = less (e, tl L)
in
if e > hd L then hd L::x::xs
else nil @ x::xs
end;
我遇到了绑定失败,肯定是在让位。我已经尝试了很多不同的thinfs,我无法弄清楚为什么这是错误的。任何人都可以发光吗?
答案 0 :(得分:0)
val x::xs = less (e, tl L)
这与less (e, t1 L)
的结果为空列表的情况不符。
该功能的正确实现是:
fun less (_, nil) = nil
| less (y, x::xs) =
let
val xs' = less (y, xs)
in
if x < y then x::xs' else xs'