Copyright | (c) 2018-2020 Kowainik |
---|---|

License | MIT |

Maintainer | Kowainik <xrom.xkov@gmail.com> |

Stability | Experimental |

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.

`>>>`

720`foldlSC (\acc x -> if x == 0 then Left 0 else Right $! acc * x) 1 [1..6]`

`>>>`

0`foldlSC (\acc x -> if x == 0 then Left 0 else Right $! acc * x) 1 (0:error "Short-circuiting should keep this from happening")`

*Since: 0.6.0.0*