This module defines a strict catenable list.
The implementation is based on a queue where all operations require
O(1) amortized time.
However, any single
uncons operation may run in
See Purely Functional Data Structures (Okasaki 1996)
data CatList a
A strict catenable list.
CatList may be empty, represented by
CatList may be non-empty, represented by
data constructor takes the first element of the list and a queue of