1
4
答案很简单——空数组具有多态类型,因为它是常量。是特例吗?嗯,有点,主要是因为数组是内置类型,它不表示为ADT,所以是的,在
然而,这并不是一个特殊的情况,它只是一个推断哪些句法表达式形成常数的问题。
注意,一般来说,宽松的值限制允许非扩展表达式的泛化(不仅仅是传统值限制中的句法常量)。其中,非扩展表达式要么是正常形式的表达式(即常量),要么是其计算不具有任何
可观测的
副作用。在我们的例子中,
OCAML值限制甚至比这更宽松,因为它允许一些扩展表达式的泛化,以防类型变量具有正方差。但这是一个完全不同的故事。
也,
|
2
4
我不相信。用户定义的数据类型也会出现类似的情况,其行为也是相同的。 例如,考虑:
就像数组一样,
即使存在类型为的值,也可以执行此操作
注意的论点
与空列表比较:
|
Tosh · ocaml获取语法错误[已关闭] 6 年前 |
Beta Ziliani · OCaml-与类型别名混淆(警告40) 6 年前 |
Jheel rathod · 带有构造函数的ocaml递归类型记录 6 年前 |
HegoDamask · (OCaml:非穷举模式匹配) 6 年前 |
Flux · 如何以静默方式加载顶级模块 6 年前 |
Flux · 如何编写显示HTML或重定向到其他页面的服务 6 年前 |
Daiwen · ocaml中GADT的异构列表[重复] 6 年前 |
nejifnjalz · OCaml语法错误-有趣的模式匹配 6 年前 |
M. Walker · 无法键入多态[%bs.raw函数 6 年前 |