foldl-1.4.15: Composable, streaming, and efficient left folds
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Foldl.NonEmpty

Description

This module provides a Fold1 type that is a "non-empty" analog of the Fold type, meaning that it requires at least one input element in order to produce a result

This module does not provide all of the same utilities as the Control.Foldl module. Instead, this module only provides the utilities which can make use of the non-empty input guarantee (e.g. head). For all other utilities you can convert them from the equivalent Fold using fromFold.

Synopsis

Documentation

data Fold1 a b Source #

A Fold1 is like a Fold except that it consumes at least one input element

Constructors

Fold1 (a -> Fold a b) 

Instances

Instances details
Profunctor Fold1 Source # 
Instance details

Defined in Control.Foldl.NonEmpty

Methods

dimap :: (a -> b) -> (c -> d) -> Fold1 b c -> Fold1 a d #

lmap :: (a -> b) -> Fold1 b c -> Fold1 a c #

rmap :: (b -> c) -> Fold1 a b -> Fold1 a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Fold1 a b -> Fold1 a c #

(.#) :: forall a b c q. Coercible b a => Fold1 b c -> q a b -> Fold1 a c #

Applicative (Fold1 a) Source # 
Instance details

Defined in Control.Foldl.NonEmpty

Methods

pure :: a0 -> Fold1 a a0 #

(<*>) :: Fold1 a (a0 -> b) -> Fold1 a a0 -> Fold1 a b #

liftA2 :: (a0 -> b -> c) -> Fold1 a a0 -> Fold1 a b -> Fold1 a c #

(*>) :: Fold1 a a0 -> Fold1 a b -> Fold1 a b #

(<*) :: Fold1 a a0 -> Fold1 a b -> Fold1 a a0 #

Functor (Fold1 a) Source # 
Instance details

Defined in Control.Foldl.NonEmpty

Methods

fmap :: (a0 -> b) -> Fold1 a a0 -> Fold1 a b #

(<$) :: a0 -> Fold1 a b -> Fold1 a a0 #

Monoid b => Monoid (Fold1 a b) Source # 
Instance details

Defined in Control.Foldl.NonEmpty

Methods

mempty :: Fold1 a b #

mappend :: Fold1 a b -> Fold1 a b -> Fold1 a b #

mconcat :: [Fold1 a b] -> Fold1 a b #

Semigroup b => Semigroup (Fold1 a b) Source # 
Instance details

Defined in Control.Foldl.NonEmpty

Methods

(<>) :: Fold1 a b -> Fold1 a b -> Fold1 a b #

sconcat :: NonEmpty (Fold1 a b) -> Fold1 a b #

stimes :: Integral b0 => b0 -> Fold1 a b -> Fold1 a b #

Floating b => Floating (Fold1 a b) Source # 
Instance details

Defined in Control.Foldl.NonEmpty

Methods

pi :: Fold1 a b #

exp :: Fold1 a b -> Fold1 a b #

log :: Fold1 a b -> Fold1 a b #

sqrt :: Fold1 a b -> Fold1 a b #

(**) :: Fold1 a b -> Fold1 a b -> Fold1 a b #

logBase :: Fold1 a b -> Fold1 a b -> Fold1 a b #

sin :: Fold1 a b -> Fold1 a b #

cos :: Fold1 a b -> Fold1 a b #

tan :: Fold1 a b -> Fold1 a b #

asin :: Fold1 a b -> Fold1 a b #

acos :: Fold1 a b -> Fold1 a b #

atan :: Fold1 a b -> Fold1 a b #

sinh :: Fold1 a b -> Fold1 a b #

cosh :: Fold1 a b -> Fold1 a b #

tanh :: Fold1 a b -> Fold1 a b #

asinh :: Fold1 a b -> Fold1 a b #

acosh :: Fold1 a b -> Fold1 a b #

atanh :: Fold1 a b -> Fold1 a b #

log1p :: Fold1 a b -> Fold1 a b #

expm1 :: Fold1 a b -> Fold1 a b #

log1pexp :: Fold1 a b -> Fold1 a b #

log1mexp :: Fold1 a b -> Fold1 a b #

Num b => Num (Fold1 a b) Source # 
Instance details

Defined in Control.Foldl.NonEmpty

Methods

(+) :: Fold1 a b -> Fold1 a b -> Fold1 a b #

(-) :: Fold1 a b -> Fold1 a b -> Fold1 a b #

(*) :: Fold1 a b -> Fold1 a b -> Fold1 a b #

negate :: Fold1 a b -> Fold1 a b #

abs :: Fold1 a b -> Fold1 a b #

signum :: Fold1 a b -> Fold1 a b #

fromInteger :: Integer -> Fold1 a b #

Fractional b => Fractional (Fold1 a b) Source # 
Instance details

Defined in Control.Foldl.NonEmpty

Methods

(/) :: Fold1 a b -> Fold1 a b -> Fold1 a b #

recip :: Fold1 a b -> Fold1 a b #

fromRational :: Rational -> Fold1 a b #

fold1 :: Foldable1 f => Fold1 a b -> f a -> b Source #

Apply a strict left Fold1 to a NonEmpty list

fromFold :: Fold a b -> Fold1 a b Source #

Promote any Fold to an equivalent Fold1

toFold :: Fold1 a b -> Fold a (Maybe b) Source #

Promote any Fold1 to an equivalent Fold

nonEmpty :: Fold1 a (NonEmpty a) Source #

Fold all values within a non-empty container into a NonEmpty list

sconcat :: Semigroup a => Fold1 a a Source #

Fold all values within a non-empty container using (<>)

head :: Fold1 a a Source #

Get the first element of a non-empty container

last :: Fold1 a a Source #

Get the last element of a non-empty container

maximum :: Ord a => Fold1 a a Source #

Computes the maximum element

maximumBy :: (a -> a -> Ordering) -> Fold1 a a Source #

Computes the maximum element with respect to the given comparison function

minimum :: Ord a => Fold1 a a Source #

Computes the minimum element

minimumBy :: (a -> a -> Ordering) -> Fold1 a a Source #

Computes the minimum element with respect to the given comparison function