我们可以在不使用二元运算的情况下在 OCaml 中找到 inter 的符号吗?我的意思是很容易通过与 0 进行比较来获得符号。除了使用 match with command 之外,还有其他方法吗?我尝试了以下
let sign n =
let k = abs(n) in
match k with
| 0 -> 0
| n -> 1
| _ -> (-1);;
Run Code Online (Sandbox Code Playgroud)
但它不适用于负数,因为它表明最后一次比较未使用。:/
与模式的模式匹配n不会将值与现有变量的值进行比较n。它n在->块内绑定一个新变量。旧变量n继续存在并保持其值,但通过该名称暂时无法访问。
结果,match … with n -> …总是成功,因为任何表达式都是n新变量的形式n。
该match构造不适用于标识整数的符号。你最好只写if n > 0 then 1 else if n < 0 then -1 else 0.