大家好,我试图理解ML中的异常是如何工作的,但是我有一个奇怪的错误,我无法弄清楚出了什么问题:
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.";
Run Code Online (Sandbox Code Playgroud)
可能有什么不对?提前感谢您的帮助.
您需要确保factorial_driver具有一致的类型.非异常情况返回int,因此ML将函数推断为类型unit -> int,但异常情况(即print表达式)返回unit,而不是int.
通常,您基本上需要在所有情况下返回相同类型的值.
| 归档时间: |
|
| 查看次数: |
4666 次 |
| 最近记录: |