是否可以使用镜头构建新记录?

时间:2013-08-25 15:02:25

标签: haskell lenses

如果我有带镜头的记录类型,是否可以在不使用基础记录存取器的情况下构建新记录?

{-# LANGUAGE TemplateHaskell #-}

import Control.Lens
import Control.Lens.TH

data Foo = Foo { _s :: String
               , _b :: Bool
               } deriving (Show, Eq)

makeLenses ''Foo

可以使Foo成为Data.Default的实例,然后使用镜头修改def,但并非所有记录类型都有合理的默认值。 Control.Lens有自己的方法吗?

1 个答案:

答案 0 :(得分:6)

不,目前无法做到这一点。您必须使用Foo{}之类的默认值或不使用镜头进行记录构建。但是,镜头中已经有issue覆盖了这个。