6

如果我有两个模块都使用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
4

0 回答 0