考虑以下两种类型:
data Point=Point{x::Float,y::Float}
data Rectangle = {upperLeft::Point, bottomRight::Point}
data Square = {upperLeft::Point, bottomRight::Point}
ghc 编译器抱怨 Rectangle 中的 upperLeft 字段名称与 Square 的名称冲突。这看起来很奇怪,因为从表面上看,每个字段名都应该在类型的命名空间中,否则不能重用字段名,我怀疑这将是一个足够普遍的期望。
例如,要定义一个变量,我们编写:
let a=Rectangle{upperLeft=Point 2 3, bottomRight=Point 7 7}
let a=Square{upperLeft=Point 2 3, bottomRight=Point 7 7}
从这里我们可以看到,我们应该能够期望每个字段名称都应该在它们各自的类型命名空间内。
我的用法是正确的还是我的期望是错误的?有没有办法解决这个问题?