| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Numeric.Optics
Description
Synopsis
- base :: (HasCallStack, Integral a) => Int -> Prism' String a
- integral :: (Integral a, Integral b) => Prism Integer Integer a b
- binary :: Integral a => Prism' String a
- octal :: Integral a => Prism' String a
- decimal :: Integral a => Prism' String a
- hex :: Integral a => Prism' String a
- adding :: Num a => a -> Iso' a a
- subtracting :: Num a => a -> Iso' a a
- multiplying :: (Fractional a, Eq a) => a -> Iso' a a
- dividing :: (Fractional a, Eq a) => a -> Iso' a a
- exponentiating :: (Floating a, Eq a) => a -> Iso' a a
- negated :: Num a => Iso' a a
- pattern Integral :: forall a. Integral a => a -> Integer
Documentation
base :: (HasCallStack, Integral a) => Int -> Prism' String a Source #
A prism that shows and reads integers in base-2 through base-36
Note: This is an improper prism, since leading 0s are stripped when reading.
>>>"100" ^? base 16Just 256
>>>1767707668033969 ^. re (base 36)"helloworld"
Predefined bases
Arithmetic lenses
subtracting :: Num a => a -> Iso' a a Source #
subtractingn =iso(subtract n) ((+n)subtractingn =re(addingn)
multiplying :: (Fractional a, Eq a) => a -> Iso' a a Source #
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 ^. re fahrenheit110.0
dividing :: (Fractional a, Eq a) => a -> Iso' a a Source #
dividingn =iso(/n) (*n)dividingn =re(multiplyingn)
Note: This errors for n = 0
exponentiating :: (Floating a, Eq a) => a -> Iso' a a Source #
exponentiatingn =iso(**n) (**recip n)
Note: This errors for n = 0
>>>au (coerced1 @Sum % re (exponentiating 2)) (foldMapOf each) (3,4) == 5True