19

我想和Lens图书馆玩一会儿。我已经将它加载到 GHCi 并创建了一个带有适当下划线的记录数据类型:

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

我想制作Foo使用makeLenses模板的镜头。我想这样做而不需要通读整套Template-Haskell 文档

我可以在 GHCi 提示符下输入什么咒语来让它工作?

4

1 回答 1

20

在 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
于 2014-08-19T20:08:27.123 回答