# Functions for splitting monadic lazy lists. #

Extract the prefix of a lazy list consisting of elements up to and including
the first element satisfying a monadic predicate.
Return (in the monad) the prefix as a `List`

, along with the remaining elements as a `MLList`

.

Extract the prefix of a lazy list consisting of elements up to and including
the first element satisfying a predicate.
Return (in the monad) the prefix as a `List`

, along with the remaining elements as a `MLList`

.

## Instances For

Extract a maximal prefix of a lazy list consisting of elements
satisfying a monadic predicate.
Return (in the monad) the prefix as a `List`

, along with the remaining elements as a `MLList`

.

(Note that the first element *not* satisfying the predicate will be generated,
and pushed back on to the remaining lazy list.)

Extract a maximal prefix of a lazy list consisting of elements
satisfying a predicate.
Return (in the monad) the prefix as a `List`

, along with the remaining elements as a `MLList`

.

(Note that the first element *not* satisfying the predicate will be generated,
and pushed back on to the remaining lazy list.)

## Instances For

Splits a lazy list into contiguous sublists of elements with the same value under a monadic function. Return a lazy lists of pairs, consisting of a value under that function, and a maximal list of elements having that value.

Splits a lazy list into contiguous sublists of elements with the same value under a function. Return a lazy lists of pairs, consisting of a value under that function, and a maximal list of elements having that value.