我已经阅读了Haskell记录的一些问题,特别是同一模块中的两个元素不能具有相同名称的事实.
我知道你可以通过单独的模块解决这个问题,但我不想这样做,而是尝试了这种方法:
class HasX a where
x :: a -> X
data D1 = D1 { d1_x :: X, ... }
instance HasX D1 where
x = d1_x
data D2 = D2 { d2_x :: X, ... }
instance HasX D2 where
x = d2_x
Run Code Online (Sandbox Code Playgroud)
(这只是获取,而不是设置,我当然需要编写更多代码来做集合).
但是,似乎所有这些的类和实例声明看起来像样板文件,应该可以使用模板haskell或其他东西来消除.
是否存在GHC的库或扩展,使得这种方法不那么混乱?
| 归档时间: |
|
| 查看次数: |
950 次 |
| 最近记录: |