|
|
1
4
答案很简单——空数组具有多态类型,因为它是常量。是特例吗?嗯,有点,主要是因为数组是内置类型,它不表示为ADT,所以是的,在
然而,这并不是一个特殊的情况,它只是一个推断哪些句法表达式形成常数的问题。
注意,一般来说,宽松的值限制允许非扩展表达式的泛化(不仅仅是传统值限制中的句法常量)。其中,非扩展表达式要么是正常形式的表达式(即常量),要么是其计算不具有任何
可观测的
副作用。在我们的例子中,
OCAML值限制甚至比这更宽松,因为它允许一些扩展表达式的泛化,以防类型变量具有正方差。但这是一个完全不同的故事。
也,
|
|
|
2
4
我不相信。用户定义的数据类型也会出现类似的情况,其行为也是相同的。 例如,考虑:
就像数组一样,
即使存在类型为的值,也可以执行此操作
注意的论点
与空列表比较:
|