【发布时间】:2015-10-03 00:12:32
【问题描述】:
目前我使用数据 fields 来模拟 C 结构。但我发现与object.property 等领域驱动的编程方式不同,在haskell 中,属性名称都被转储到模块命名空间中。当我有多个这样的结构时,这会产生一些问题。例如,如果我有两种数据类型怎么办:
data Person = Person { name :: Text, address :: Text }
data Dog = Dog { name :: Text, breed :: Text }
然后 GHC 会抱怨:Multiple declarations of ‘name’。因此我必须用前缀命名“属性”:
data Person = Person { getPersonName :: Text, getPersonAddress :: Text }
data Dog = Dog { getDogName :: Text, getDogBreed :: Text }
这有必要吗?还是我使用了错误的方式来定义结构?
【问题讨论】:
标签: haskell