8

如果我有一个带镜头的记录类型,是否可以在不使用底层记录访问器的情况下构造一个新记录?

{-# 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 有自己的方法吗?

4

1 回答 1

6

不,目前没有办法做到这一点。您必须使用Foo{}默认设置或不使用镜头进行记录构建。然而,镜头覆盖这个问题已经存在。

于 2013-08-25T15:40:45.243 回答