gpt4 book ai didi

error-handling - 如何处理 ML 中的除以零错误

转载 作者:行者123 更新时间:2023-12-01 01:22:57 26 4
gpt4 key购买 nike

我是 ML 的新手。

我需要定义一个将条件表达式作为参数的函数,问题是该表达式是否无效,如 "10 div 0 = 0" .我该如何处理?

例如,函数定义如下:foo exp1 = if (exp1) then ... else... , 和 exp1"10 div 0 = 0" ,如何处理这个除法错误。

最佳答案

看来您要询问有关 SML 中的异常处理机制的问题。
div SML 基础库中的函数在调用时引发 Div 异常 10 div 0 .这取决于您是否需要该值来处理异常。在这种情况下,您可以返回 true/false 或选项类型:

(* only catch exception, ignore value *)
fun div_check (x, y) = (
ignore (x div y);
false
) handle Div => true

(* catch exception and return option value *)
fun div_check2 (x, y) = (
SOME (x div y)
) handle Div => NONE

更新:

编译器没有引发 Div 真的很奇怪在这种情况下异常(exception)。我建议您定义一个自定义 div 函数并自己引发/处理异常:
exception DivByZero;

(* custom div function: raise DivByZero if y is zero *)
infix my_div;
fun x my_div y =
if y=0 then raise DivByZero else x div y

fun div_check (x, y) = (
ignore (x my_div y);
false
) handle DivByZero => true

fun div_check2 (x, y) = (
SOME (x my_div y)
) handle DivByZero => NONE

关于error-handling - 如何处理 ML 中的除以零错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8401751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com