haskell ghci template-haskell lens

haskell - ¿Cómo hago lentes a partir de un registro en GHCi?



template-haskell lens (1)

Probado en GHCi 7.8.3:

:set -XTemplateHaskell :m +Control.Lens :{ data AST = AInt { _aid :: Int, _ival :: Int } | AChar { _aid :: Int, _cval :: Char } deriving (Show) makeLenses ''''AST :}

(Creo que el bloque :{ ... :} es necesario para que funcione makeLenses ).

Vamos a revisar brevemente:

λ >> AChar 100 ''f'' ^. aid 100 λ >> AChar 100 ''f'' ^? cval Just ''f'' λ >> AInt 101 0 ^? cval Nothing

Quiero jugar un poco con la biblioteca de Lens . Lo he cargado en GHCi y he creado un tipo de datos de registro con los guiones bajos apropiados:

> data Foo a = Foo {_arg1 :: Int, _arg2 :: [a]}

Me gustaría hacer las lentes para Foo usando la plantilla de makeLenses . Me gustaría hacer esto sin necesidad de leer todo el conjunto de documentos de Template-Haskell .

¿Qué conjuro puedo escribir en el aviso de GHCi para que esto funcione?