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
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
在空列表的情况下,您返回一个空列表,其类型与元素的类型不兼容,例如h
or min t
。
一些更正:
Empty
。所以函数的骨架是:
fun min [] = raise Empty
| min [x] = ...
| min (x::xs) = ...
在这种情况下,最好利用选项类型。您将避免必须处理异常,但无论您从何处调用此函数,都将被迫正确处理 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