如果我有两个模块都使用Control.Lens.TH
'makeFields
从记录生成字段,并且每个不同模块中的记录具有相同的字段名称,那么确保两个模块使用相同定义的name
镜头和HasName
没有一个模块的类依赖于另一个?
目前,我正在使用另一个以SharedFields
单个记录命名的模块,其中每个字段都需要共享,然后将该SharedFields
模块导入到需要生成 TH 字段的任何其他内容中——但这很尴尬且容易出错。
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