Traversable

trait Traversable[t: Type -> Type] with Functor[t], Foldable[t]Source

A trait for data structures that can be traversed in left-to-right order with an applicative functor.

Instances

instance Traversable[Chain]Source
instance Traversable[DelayList]Source
instance Traversable[Identity]Source
instance Traversable[List]Source
instance Traversable[Map[k]]Source
instance Traversable[Nec]Source
instance Traversable[Nel]Source
instance Traversable[Option]Source
instance Traversable[RedBlackTree[k]]Source
instance Traversable[Vector]Source

Signatures

def traverse(f: a -> m[b] \ ef, t: t[a]): m[t[b]] \ ef + Aef[t] with Traversable[t], Applicative[m] Source

Returns the result of applying the applicative mapping function f to all the elements of the data structure t.

Trait Definitions

def sequence(t: t[m[a]]): m[t[a]] \ Aef[t] with Traversable[t], Applicative[m] Source

Returns the result of running all the actions in the data structure t.

Module Definitions

def for(t: t[a], f: a -> m[b] \ ef): m[t[b]] \ ef + Aef[t] with Applicative[m], Traversable[t] Source

Returns the result of applying the applicative mapping function f to all the elements of the data structure t.

for is traverse with it's arguments flipped.

def mapAccumLeft(f: acc -> (a -> (acc, b) \ ef), start: acc, t: t[a]): (acc, t[b]) \ ef + Aef[t] with Traversable[t] Source

Returns the result of applying f to the traversable structure t and the initial state acc. The result is a pair of the final state and the updated copy of the structure.

mapAccumLeft is essentially the combination of map and foldLeft - like map it returns an updated copy of the initial structure, like foldLeft it passes an updating accumulator through each step of the traversal.