Haskell语言学习笔记(44)Lens(2)

来源:互联网 发布:鹰击长空2知乎 编辑:程序博客网 时间:2024/06/05 03:17

preview, review

Prelude Control.Lens> view _Left (Left "abc")"abc"Prelude Control.Lens> view _Right (Right "abc")"abc"Prelude Control.Lens> view _Just (Just "abc")"abc"Prelude Control.Lens> preview _Left (Left "abc")Just "abc"Prelude Control.Lens> review _Left "abc"Left "abc"
  • preview 和 review 函数处理 Either 这样的和类型
    preview 函数向上走一个分支。
    review 函数向下走一个分支。

preview, review 的操作符版本

Prelude Control.Lens> Left "abc" ^. _Left"abc"Prelude Control.Lens> Left "abc" ^? _LeftJust "abc"Prelude Control.Lens> Right "abc" ^? _LeftNothingPrelude Control.Lens> Right "abc" ^? _RightJust "abc"Prelude Control.Lens> _Left # "abc"Left "abc"

preview l x ≡ x ^? l
review l x ≡ l # x

toListOf 及其操作符版本

Prelude Control.Lens> toListOf traverse [1,2,3][1,2,3]Prelude Control.Lens> toListOf (traverse.traverse) [[1,2],[3]][1,2,3]Prelude Control.Lens> toListOf both (1,2)[1,2]Prelude Control.Lens> toListOf _1 (4, 1)[4]Prelude Control.Lens> [[1,2],[3]] ^..traverse.traverse[1,2,3]Prelude Control.Lens> (1,2) ^..both[1,2]Prelude Control.Lens> (4, 1) ^.._2[1]
原创粉丝点击