如果我有两个模块都使用Control.Lens.TH
'makeFields
来生成记录中的字段,并且每个不同模块中的记录具有相同的字段名称,那么确保最佳方法是什么?两个模块使用相同的name
镜头定义和HasName
类,而没有其中一个模块依赖于另一个模块?
目前,我正在使用另一个名为SharedFields
的模块,其中包含需要共享的每个字段的单个记录,然后在需要生成TH字段的任何其他内容中导入SharedFields
模块 - 但是这很尴尬,容易出错。
module First where
import Control.Lens
data First = First { firstName :: Bool }
deriving (Read, Show, Eq)
makeFields ''First
module Second where
import Control.Lens
data Second = Second { secondName :: () }
deriving (Read, Show, Eq)
makeFields ''Second
module Third (name) where
import First
import Second