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

时间:2016-04-11 16:06:21

标签: haskell lens arrows

我遇到了using arrows for XML manipulation

的例子(自2010年起)

对于那些在那里演示的用例,arrow抽象优于lens是否有优势?

1 个答案:

答案 0 :(得分:3)

Lenses and arrows are theoretical cousins,两者都试图创建可以充当吸气剂和制定者的组合功能值。但是,这是一个主观意见,我认为,如果你在围栏上,你应该使用镜头。它归结为图书馆支持。镜头是

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

  • 基本上是相同的用户界面(使用.将镜头粉碎在一起形成新镜头,而使用.将箭头一起粉碎)

  • 可能lift arrows into lenses(有点像演示而不是任何演示)

  • 可能lens into XML with xml-lenses

  • 充满了其他好东西(如遍历,折叠和同构)和帮助者(想想:镜像为泛型,uniplate,MonadReader / MonadState)

  • 目前在Haskell社区中更受欢迎,例如更多人知道并回答有关Stack Overflow的问题

一个缺点:lens是一个很大的问题。包含粗糙类型的包。

相关问题