lens-1.4: examples/Test.hs
{-# LANGUAGE TemplateHaskell #-}
module Test where
import Control.Lens
import Control.Lens.TH
data Foo a = Foo a
makeLenses ''Foo
data Bar a b c = Bar { _baz :: (a, b) }
makeLenses ''Bar
data Quux a b = Quux { _quaffle :: Int, _quartz :: Double }
makeLenses ''Quux
data Quark a = Qualified { _gaffer :: a }
| Unqualified { _gaffer :: a, blockingGaffer :: a }
makeLenses ''Quark
data LensCrafted a = Still { _still :: a }
| Works { _still :: a }
makeLenses ''LensCrafted
data Mono = Mono { _monoFoo :: Int, _monoBar :: Int }
makeClassy ''Mono
data Nucleosis = Nucleosis { _nuclear :: Mono }
makeClassy ''Nucleosis
instance HasMono Nucleosis where
mono = nuclear