Joh*_*ler 16 haskell ghci template-haskell haskell-lens
我想和Lens图书馆玩一下.我已将其加载到GHCi中并使用适当的下划线创建记录数据类型:
> data Foo a = Foo {_arg1 :: Int, _arg2 :: [a]}
Run Code Online (Sandbox Code Playgroud)
我想制作Foo使用makeLenses模板的镜头.我想这样做而不需要阅读整套Template-Haskell文档.
我可以在GHCi提示符下输入什么咒语来使其工作?
kga*_*dek 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
:}
Run Code Online (Sandbox Code Playgroud)
(我认为该:{ ... :}块是makeLenses工作所必需的).
我们来简要检查一下:
? >> AChar 100 'f' ^. aid
100
? >> AChar 100 'f' ^? cval
Just 'f'
? >> AInt 101 0 ^? cval
Nothing
Run Code Online (Sandbox Code Playgroud)