Jeśli mam typ rekordów z soczewkami, czy możliwe jest skonstruowanie nowego rekordu bez korzystania z podstawowych akcesorów rekordów?Czy można skonstruować nowy rekord za pomocą soczewek?
{-# LANGUAGE TemplateHaskell #-}
import Control.Lens
import Control.Lens.TH
data Foo = Foo { _s :: String
, _b :: Bool
} deriving (Show, Eq)
makeLenses ''Foo
I mógłby zrobić Foo
instancję Data.Default
a następnie modifiy def
obiektywy, ale nie wszystkie typy rekordów będzie mieć sensowne domyślne. Czy Control.Lens ma na to swój własny sposób?
Zawsze możesz użyć 'Foo {}' jako domyślnego, pozostawiając wszystkie pola niezdefiniowane. –
Dzięki! Nie wiedziałem nawet, że możesz tam pominąć pola. Po prostu * założyłem * byłby to błąd kompilacji. –
Pamiętaj, że to nie zadziała, jeśli 'Foo' ma ścisłe pola. – shachaf