exception Factorial
fun checked_factorial n =
if n < 0 then
raise Factorial
else n;
fun factorial_driver () =
checked_factorial(~4)
handle
Factorial => print "Out of range.";
可能有什么不对?提前感谢您的帮助。
答案 0 :(得分:7)
您需要确保factorial_driver
具有一致的类型。非异常情况返回int
,因此ML将函数推断为unit -> int
类型,但异常情况(即print
表达式)返回unit
,不是int
。
通常,您基本上需要在所有情况下都返回相同类型的值。