自动镜头聚合

时间:2015-06-06 18:38:07

标签: haskell lens

我刚从makeClass包中发现了lens。它允许你做像

这样的事情
data Point2 = Point2 { _x:: Double, _y :: Double }
makeClassy ''Point2

data Point3 = Point3 { _p2 : Point2, _z :: Double}
makeclassy ''Point3

instance HasPoint2 Point3 where
    point2 = p2

然后您可以执行

之类的操作
p3 = Point3 (Point 2 1 2) 3

p3 ^. x -- 1
p3 ^. y -- 2
p3 ^. z -- 3

哪个很棒。但是,有没有办法在一步中重新组合makeClassyinstance HasPoint2

0 个答案:

没有答案