在 OCaml 中查找整数的符号

Thi*_*ruG 0 ocaml sign

我们可以在不使用二元运算的情况下在 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)

但它不适用于负数,因为它表明最后一次比较未使用。:/

Pas*_*uoq 5

与模式的模式匹配n不会将值与现有变量的值进行比较n。它n->块内绑定一个新变量。旧变量n继续存在并保持其值,但通过该名称暂时无法访问。

结果,match … with n -> …总是成功,因为任何表达式都是n新变量的形式n

match构造不适用于标识整数的符号。你最好只写if n > 0 then 1 else if n < 0 then -1 else 0.