haskell - 用于更新树结构的透镜或箭头?

标签 haskell haskell-lens arrows

我遇到了一个例子(2010 年)using arrows for XML manipulation

针对此处演示的用例,arrow 抽象相对于最新的 lens 是否有优势?

最佳答案

Lenses and arrows are theoretical cousins ,两者都尝试创建可以充当 getter 和 setter 的组合函数值。但是,这是一个主观意见,我认为如果你持观望态度,你应该使用镜头。这取决于图书馆的支持。镜头是

  • 更积极地维护,几乎每天都有提交

  • 用户界面基本相同(使用 . 将镜片粉碎在一起形成新镜片与使用 . 将箭头粉碎在一起)

  • 可能lift arrows into lenses (有点;更多的是演示)

  • 可能lens into XML with xml-lenses

  • 充满了其他好东西(比如遍历、折叠和同构)和助手(想想:泛型、uniplate、MonadReader/MonadState)

  • 目前在 Haskell 社区中更受欢迎,例如更多人了解 Stack Overflow 并回答问题

一个缺点:lens是一个带有粗糙类型的大包。

关于haskell - 用于更新树结构的透镜或箭头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553821/

相关文章:

haskell - Yesod 将 getCurrentRoute 与具有动态参数的路由进行比较

haskell - Control.Lens.Setter将类型包装在仿函数中是否不是多余的?

haskell - 对从另一个 Iso 构建一个 Iso 感到困惑

haskell - 将 Store comonad 箭头化

haskell - 我们可以为 WrappedArrow 定义一个 Monad 实例吗?

haskell - 在 Frege 中表达渴望但在 Haskell 中很懒惰?

haskell - 模式匹配和命名参数合二为一

Haskell - 定义函数所需的 Num Char 实例

haskell - 使用镜头测试 map 成员资格

haskell - 有类似 `map2::(i -> a) -> (i -> b) -> [i] -> [(a,b)]` 的东西吗?