dlist-0.3.1: Differences lists

Portabilityportable (Haskell 98)




Difference lists: a data structure for O(1) append on lists.



data DList a Source

A difference list is a function that given a list, returns the original contents of the difference list prepended at the given list

This structure supports O(1) append and snoc operations on lists.


fromList :: [a] -> DList aSource

Converting a normal list to a dlist

toList :: DList a -> [a]Source

Converting a dlist back to a normal list

Basic functions

empty :: DList aSource

Create a difference list containing no elements

singleton :: a -> DList aSource

Create difference list with given single element

cons :: a -> DList a -> DList aSource

O(1), Prepend a single element to a difference list

snoc :: DList a -> a -> DList aSource

O(1), Append a single element at a difference list

append :: DList a -> DList a -> DList aSource

O(1), Appending difference lists

concat :: [DList a] -> DList aSource

O(spine), Concatenate difference lists

list :: b -> (a -> DList a -> b) -> DList a -> bSource

O(length dl), List elimination, head, tail.

head :: DList a -> aSource

Return the head of the list

tail :: DList a -> DList aSource

Return the tail of the list

unfoldr :: (b -> Maybe (a, b)) -> b -> DList aSource

Unfoldr for difference lists

foldr :: (a -> b -> b) -> b -> DList a -> bSource

Foldr over difference lists

map :: (a -> b) -> DList a -> DList bSource

Map over difference lists.