haskell - 如何从 GHCi 中的记录制作镜头

标签 haskell ghci template-haskell haskell-lens

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

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

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

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

最佳答案

在 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
:}

(我相信 :{ ... :} block 是 makeLenses 工作所必需的)。

让我们简单检查一下:
λ >> AChar 100 'f' ^. aid
100
λ >> AChar 100 'f' ^? cval
Just 'f'
λ >> AInt 101 0 ^? cval
Nothing

关于haskell - 如何从 GHCi 中的记录制作镜头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18395816/

相关文章:

scala - 等效于 ScalaZ 中的新类型派生

Haskell - 找不到包

haskell - GHCi下的动态加载

Haskell:如何判断类型是否是类的实例?

Haskell -- 如何使用新的 4 参数准引号

使用 Haskell 模式在 Emacs 中自动完成 Haskell

haskell - GHC 特化保证

haskell - 使用 ghci 时如何重用 cabal 编译模块

haskell - ghci 仅显示类型类方法

haskell - Yesod 中模板 haskell 的评估