lens-3.7.4: Lenses, Folds and Traversals

Portabilityportable
Stabilityprovisional
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellNone

Data.List.Lens

Description

Traversals for manipulating parts of a list.

Synopsis

Documentation

_head :: SimpleIndexedTraversal Int [a] aSource

A Traversal reading and writing to the head of a non-empty list.

>>> [a,b,c]^? _head
Just a
>>> [a,b,c] & _head .~ d
[d,b,c]
>>> [a,b,c] & _head %~ f
[f a,b,c]
>>> [] & _head %~ f
[]
>>> [1,2,3]^?!_head
1
>>> []^?_head
Nothing
>>> [1,2]^?_head
Just 1
>>> [] & _head .~ 1
[]
>>> [0] & _head .~ 2
[2]
>>> [0,1] & _head .~ 2
[2,1]

_tail :: Simple Traversal [a] [a]Source

A Traversal reading and writing to the tail of a non-empty list

>>> [a,b] & _tail .~ [c,d,e]
[a,c,d,e]
>>> [] & _tail .~ [a,b]
[]
>>> [a,b,c,d,e] & _tail.traverse %~ f
[a,f b,f c,f d,f e]
>>> [1,2] & _tail .~ [3,4,5]
[1,3,4,5]
>>> [] & _tail .~ [1,2]
[]
>>> [a,b,c]^?_tail
Just [b,c]
>>> [1,2]^?!_tail
[2]
>>> "hello"^._tail
"ello"
>>> ""^._tail
""

_last :: SimpleIndexedTraversal Int [a] aSource

A Traversal reading and writing to the last element of a non-empty list

>>> [a,b,c]^?!_last
c
>>> []^?_last
Nothing
>>> [a,b,c] & _last %~ f
[a,b,f c]
>>> [1,2]^?_last
Just 2
>>> [] & _last .~ 1
[]
>>> [0] & _last .~ 2
[2]
>>> [0,1] & _last .~ 2
[0,2]

_init :: Simple Traversal [a] [a]Source

A Traversal reading and replacing all but the a last element of a non-empty list

>>> [a,b,c,d]^?_init
Just [a,b,c]
>>> []^?_init
Nothing
>>> [a,b] & _init .~ [c,d,e]
[c,d,e,b]
>>> [] & _init .~ [a,b]
[]
>>> [a,b,c,d] & _init.traverse %~ f
[f a,f b,f c,d]
>>> [1,2,3]^?_init
Just [1,2]
>>> [1,2,3,4]^?!_init
[1,2,3]
>>> "hello"^._init
"hell"
>>> ""^._init
""

strippingPrefix :: Eq a => [a] -> Simple Prism [a] [a]Source

A Prism stripping a prefix from a list when used as a Traversal, or prepending that prefix when run backwards:

>>> "preview" ^? strippingPrefix "pre"
Just "view"
>>> "review" ^? strippingPrefix "pre"
Nothing
>>> "amble"^.remit (strippingPrefix "pre")
"preamble"