我想稍微使用Lens
库。我已将其加载到GHCi中并创建了具有相应下划线的记录数据类型:
> data Foo a = Foo {_arg1 :: Int, _arg2 :: [a]}
我想使用Foo
模板为makeLenses
制作镜头。我想这样做而不需要阅读整套Template-Haskell docs。
我可以在GHCi提示符下输入什么咒语来使其发挥作用?
答案 0 :(得分:15)
在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
:}
(我认为:{ ... :}
阻止是makeLenses
工作所必需的。
让我们简单地检查一下:
λ >> AChar 100 'f' ^. aid
100
λ >> AChar 100 'f' ^? cval
Just 'f'
λ >> AInt 101 0 ^? cval
Nothing