gpt4 book ai didi

ocaml - OCaml中的 "int/2"类型是什么

转载 作者:行者123 更新时间:2023-12-02 05:03:24 24 4
gpt4 key购买 nike

当我在交互环境(OCamlutop)中执行以下命令时,所有“int”类型的表达式结果都是“int/2 “类型。此行为可以复制如下。

# 3;;
- : int = 3

# type int;;
type int

# type a;;
type a

# 3;;
- : int/2 = 3

有人知道为什么会这样吗?谢谢!

2020 年 3 月 2 日编辑:

我发现如果我执行以下操作,“int/2”将不会出现。谁能解释一下这里发生了什么?

# 3;;
- : int = 3

# type int;;
type int

# 3;;
- : int = 3

更新:OCaml 版本 4.08.1 用于上述案例。

最佳答案

常量3 是内置类型int,它不是范围内的int 类型。所以顶层附加一个数字来表示这个事实。否则事情会变得非常困惑。即,您会收到类似“期望值是 int 类型,但此值是 int 类型”的消息。使用 /n 标签,它更清楚地表示“期望值是 int/n 类型(一种 int),但这个值是 int/m 类型(另一种不同类型的 int)”

似乎这个行为是在 OCaml 4.08.0 中添加的。您可以在此处找到对该功能的讨论:https://github.com/ocaml/ocaml/pull/1120

更新

您应该显示您的 OCaml 版本。此功能是最近才添加的,您可能会遇到有或没有此功能的顶层。

无论如何,在我使用 OCaml 4.10.0 的测试中,您的两个示例都使用了 int/n 符号

$ ocaml
OCaml version 4.10.0
# 3;;
- : int = 3
# type int;;
type int
# type a;;
type a
# 3;;
- : int/2 = 3

$ ocaml
OCaml version 4.10.0
# 3;;
- : int = 3
# type int;;
type int
# 3;;
- : int/2 = 3

(也有可能这种行为在 OCaml 4.10.0 中变得更加一致。)

关于ocaml - OCaml中的 "int/2"类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60331432/

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