【发布时间】:2011-05-14 17:09:54
【问题描述】:
我在一个程序中使用了很多不同的记录,其中一些使用相同的字段名称,例如
data Customer = Customer { ..., foo :: Int, ... }
data Product = Product { ..., foo :: Int, ... }
现在,由于访问器函数“foo”被定义了两次,我得到了“多重声明”错误。避免这种情况的一种方法是使用完全限定导入的不同模块,或者只是重命名字段(我不想这样做)。
官方建议在 Haskell 中处理这个问题的方法是什么?
【问题讨论】:
-
我分担你的痛苦。我来自 OO 世界。
-
所以看起来我会选择合格的进口产品——至少对于这个项目来说是这样。谢谢大家的答案!这是我想念使用类型类时摆脱 DRY 违规的 Scheme 宏的那些时刻之一......
-
我发现this project page 是关于 GHC 的
OverloadedRecordFields扩展,以允许多个记录数据类型共享相同的字段名称。
标签: haskell namespaces types records