gpt4 book ai didi

syntax - OCaml 文字负数?

转载 作者:行者123 更新时间:2023-12-04 17:23:23 27 4
gpt4 key购买 nike

我在学。这是我觉得奇怪的事情:

let test_treeways x = match x with
| _ when x < 0 -> -1
| _ when x > 0 -> 1
| _ -> 0;;

如果我这样称呼它:
test_threeways -10;;

我会得到类型不匹配错误(因为,据我所知,它将一元减号解释为偏函数应用程序,所以它认为表达式的类型是 int -> int 。但是,这个:
test_threeways (-10);;

按预期运行(尽管这实际上计算了值,正如我所理解的,它没有将常量“减十”传递给函数。

那么,如何在 OCaml 中写出常数负数呢?

最佳答案

您需要将其括起来以避免解析歧义。 “test_threeways -10”也可能意味着:从 test_threeways 中减去 10。

并且不涉及功能应用。只需重新定义一元减号,即可查看差异:

#let (~-) = (+) 2 ;; (* See documentation of pervarsives *)
val ( ~- ) : int -> int = <fun>
# let t = -2 ;;
val t : int = -2 (* no function application, constant negative number *)
# -t ;;
- : int = 0 (* function application *)

关于syntax - OCaml 文字负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16041393/

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