【发布时间】:2018-06-10 09:11:46
【问题描述】:
值限制规则说,只有当表达式的右侧在语法上是一个值时,才能进行泛化。
我不明白为什么let r = ref None 会受到价值限制?
为什么ref (Some 2) 是一个值而ref None 不是?
None 是不是就像一个类型构造函数? None 不是一个值?在我看来,None 是一个多态值。有没有多态值之类的东西?
在我看来,当与多个多态实体(例如 id id 或 ref None)进行某种交互时,就会出现值限制。
我是 OCaml 的初学者,正在自学。任何帮助表示赞赏。
【问题讨论】:
-
ref None是一个值(ref (Some 2)... 也是如此)。值限制规则是关于类型的。键入发生在编译时。值在运行时存在。 -
我在这里读到的mlton.org/ValueRestriction ref None 不是一个值。
-
我正在通过stackoverflow.com/questions/42149525/…中给出的语法值的更精确定义
标签: polymorphism ocaml