Fra*_*ser 6 haskell haskell-lens
如果我有两个模块都使用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
Run Code Online (Sandbox Code Playgroud)
module Second where
import Control.Lens
data Second = Second { secondName :: () }
deriving (Read, Show, Eq)
makeFields ''Second
Run Code Online (Sandbox Code Playgroud)
module Third (name) where
import First
import Second
Run Code Online (Sandbox Code Playgroud)