lens-4.1.2: Lenses, Folds and Traversals

Portability portable provisional Edward Kmett None

Numeric.Lens

Contents

Description

Synopsis

# Documentation

base :: Integral a => Int -> Prism' String aSource

A prism that shows and reads integers in base-2 through base-36

````>>> ````"100" ^? base 16
```Just 256
```
````>>> ````1767707668033969 ^. re (base 36)
```"helloworld"
```

integral :: (Integral a, Integral b) => Prism Integer Integer a bSource

This `Prism` extracts can be used to model the fact that every `Integral` type is a subset of `Integer`.

Embedding through the `Prism` only succeeds if the `Integer` would pass through unmodified when re-extracted.

# Predefined bases

``binary` = `base` 2`
``octal` = `base` 8`
``decimal` = `base` 10`
``hex` = `base` 16`

# Arithmetic lenses

adding :: Num a => a -> Iso' a aSource

``adding` n = `iso` (+n) (subtract n)`
````>>> ````[1..3]^..traverse.adding 1000
```[1001,1002,1003]
```

subtracting :: Num a => a -> Iso' a aSource

``` `subtracting` n = `iso` (subtract n) ((+n)
`subtracting` n = `from` (`adding` n)
```

multiplying :: (Fractional a, Eq a) => a -> Iso' a aSource

``multiplying` n = iso (*n) (/n)`

Note: This errors for n = 0

````>>> ````5 & multiplying 1000 +~ 3
```5.003
```
````>>> ````let fahrenheit = multiplying (9/5).adding 32 in 230^.from fahrenheit
```110.0
```

dividing :: (Fractional a, Eq a) => a -> Iso' a aSource

``` `dividing` n = `iso` (/n) (*n)
`dividing` n = `from` (`multiplying` n)```

Note: This errors for n = 0

exponentiating :: (Floating a, Eq a) => a -> Iso' a aSource

``exponentiating` n = `iso` (**n) (**recip n)`

Note: This errors for n = 0

````>>> ````au (exponentiating 2._Unwrapping Sum) (foldMapOf each) (3,4)
```5.0
```