レンズでレコードタイプを使用している場合、基礎となるレコードアクセサを使用せずに新しいレコードを作成することは可能ですか?レンズを使用して新しいレコードを作成することはできますか?
{-# 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
をmodifiyはなく、すべてのレコードタイプは、適切なデフォルト値を持つことになりますことができます。 Control.Lensには独自の方法がありますか?
デフォルトでは常に 'Foo {}'を使うことができ、すべてのフィールドは未定義のままです。 –
ありがとう!私はあなたがフィールドを省略できることを知らなかった。私はちょうど*コンパイルエラーであると仮定しました。 –
'Foo'が厳密なフィールドを持っている場合、これは動作しません。 – shachaf