关于previous question的更多[间接]:那里,我对镜头的定义是
data Iso α β = Iso { fw :: α -> β, bw :: β -> α }
data Lens α β = forall r. Lens (Iso α (β, r))
这很好,只要模块导入不合格。问题从它的情况开始,而对于import qualified Util.Lens as L
,我收到的错误是fw
不是构造函数Iso
的(可见)字段。代码本身很简单,
data BValue = BValue { p :: Float, d :: Float, q :: Float } deriving Show
pLens :: L.Lens BValue Float
pLens = L.Lens (L.Iso { fw = pFwd, bw = pBwd })
Util.Lens导出Lens(..)
和Iso(..)
。 TIA。
答案 0 :(得分:5)
记录字段也需要限定,即:
L.Iso { L.fw = pFwd, L.bw = pBwd }