This module provides a type class for unfoldable functors, i.e. functors which support an unfoldr operation.

This allows us to unify various operations on arrays, lists, sequences, etc.

#Unfoldable Source

class Unfoldable t  where

This class identifies data structures which can be unfolded, generalizing unfoldr on arrays.

The generating function f in unfoldr f in understood as follows:

  • If f b is Nothing, then unfoldr f b should be empty.
  • If f b is Just (Tuple a b1), then unfoldr f b should consist of a appended to the result of unfoldr f b1.



#replicate Source

replicate :: forall a f. Unfoldable f => Int -> a -> f a

Replicate a value some natural number of times. For example:

replicate 2 "foo" == ["foo", "foo"] :: Array String

#replicateA Source

replicateA :: forall a f m. Applicative m => Unfoldable f => Traversable f => Int -> m a -> m (f a)

Perform an Applicative action n times, and accumulate all the results.

#none Source

none :: forall a f. Unfoldable f => f a

The container with no elements - unfolded with zero iterations. For example:

none == [] :: forall a. Array a

#singleton Source

singleton :: forall a f. Unfoldable f => a -> f a

Contain a single value. For example:

singleton "foo" == ["foo"] :: Array String

#fromMaybe Source

fromMaybe :: forall a f. Unfoldable f => Maybe a -> f a

Convert a Maybe to any Unfoldable like lists and arrays.