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

Pet*_*all 8 haskell lenses

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

{-# LANGUAGE TemplateHaskell #-}

import Control.Lens
import Control.Lens.TH

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

makeLenses ''Foo
Run Code Online (Sandbox Code Playgroud)

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

ben*_*ofs 6

不,目前没有办法做到这一点.你必须使用像Foo{}默认或不使用镜头的记录构造.但是,镜头中已经存在一个问题.