lens-3.6: Lenses, Folds and Traversals

Portability portable provisional Edward Kmett Safe-Inferred

Data.List.Lens

Contents

Description

Traversals for manipulating parts of a list.

Synopsis

# Partial Lenses

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

````>>> ````[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

````>>> ````[1,2] & _tail .~ [3,4,5]
```[1,3,4,5]
```
````>>> ````[] & _tail .~ [1,2]
```[]
```
````>>> ````[1,2,3]^?_tail
```Just [2,3]
```
````>>> ````[1,2]^?!_tail
```[2]
```
````>>> ````"hello"^._tail
```"ello"
```
````>>> ````""^._tail
```""
```

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

````>>> ````[1,2,3]^?!_last
```3
```
````>>> ````[]^?_last
```Nothing
```
````>>> ````[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

````>>> ````[1,2,3,4]^?!_init
```[1,2,3]
```
````>>> ````[1,2] & _init .~ [3,4,5]
```[3,4,5,2]
```
````>>> ````[] & _init .~ [1,2]
```[]
```
````>>> ````[1,2,3]^?_init
```Just [1,2]
```
````>>> ````[1,2]^?!_init
```[1]
```
````>>> ````"hello"^._init
```"hell"
```
````>>> ````""^._init
```""
```