Copyright | (c) 2018-2023 Kowainik |
---|---|
License | MIT |
Maintainer | Kowainik <xrom.xkov@gmail.com> |
Stability | Stable |
Portability | Portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Contains utility functions for working with tuples.
Since: 0.6.0.0
Documentation
foldlSC :: forall t b a. Foldable t => (b -> a -> Either b b) -> b -> t a -> b Source #
A left-associative fold that's tail-recursive but can still short-circuit.
Returning a Left
short-circuits and immediately returns the value inside.
Returning a Right
continues the fold as usual with the value inside.
>>>
foldlSC (\acc x -> if x == 0 then Left 0 else Right $! acc * x) 1 [1..6]
720>>>
foldlSC (\acc x -> if x == 0 then Left 0 else Right $! acc * x) 1 (0:error "Short-circuiting should keep this from happening")
0
Since: 0.6.0.0
average :: forall a f. (Foldable f, Fractional a) => f a -> Maybe a Source #
Given a Foldable
of Fractional
elements, computes the average if
possible and returns Maybe
element.
>>>
average [42]
Just 42.0>>>
average @Double [1, 2, 3, 4]
Just 2.5>>>
average @Float [1.5, 2.5, 3 ,4]
Just 2.75>>>
average []
Nothing
Since: 1.0.0.0