fun min [] = [] | min (h::t) = if h < (min t) then h else (min t)
为什么上面给出了错误? 请帮忙! 谢谢!
错误消息:
stdIn:1.37 Error: overloaded variable not defined at type
symbol: <
type: 'Z list
答案 0 :(得分:1)
如果是空列表,则返回一个空列表,其类型与h
或min t
等元素的类型不兼容。
一些更正:
Empty
。因此函数的骨架将是:
fun min [] = raise Empty
| min [x] = ...
| min (x::xs) = ...
答案 1 :(得分:0)
在这种情况下,最好利用选项类型。您将避免必须处理异常,但无论您从何处调用此函数,都将被强制处理NONE案例。
fun smallest [] = NONE
| smallest (x::xs) = case smallest xs of
NONE => SOME x
| SOME y => if x < y
then SOME x
else SOME y