aivika-4.3.4: A multi-paradigm simulation library

CopyrightCopyright (c) 2009-2015, David Sorokin <david.sorokin@gmail.com>
LicenseBSD3
MaintainerDavid Sorokin <david.sorokin@gmail.com>
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell2010

Simulation.Aivika.DoubleLinkedList

Description

Tested with: GHC 7.10.1

An imperative double-linked list.

Synopsis

Documentation

data DoubleLinkedList a Source

The DoubleLinkedList type represents an imperative double-linked list.

listNull :: DoubleLinkedList a -> IO Bool Source

Test whether the list is empty.

listCount :: DoubleLinkedList a -> IO Int Source

Return the number of elements in the list.

newList :: IO (DoubleLinkedList a) Source

Create a new list.

listInsertFirst :: DoubleLinkedList a -> a -> IO () Source

Insert a new element in the beginning.

listAddLast :: DoubleLinkedList a -> a -> IO () Source

Add a new element to the end.

listRemoveFirst :: DoubleLinkedList a -> IO () Source

Remove the first element.

listRemoveLast :: DoubleLinkedList a -> IO () Source

Remove the last element.

listRemove :: Eq a => DoubleLinkedList a -> a -> IO Bool Source

Remove the specified element from the list and return a flag indicating whether the element was found and removed.

listRemoveBy :: DoubleLinkedList a -> (a -> Bool) -> IO (Maybe a) Source

Remove an element satisfying the specified predicate and return the element if found.

listContains :: Eq a => DoubleLinkedList a -> a -> IO Bool Source

Detect whether the specified element is contained in the list.

listContainsBy :: DoubleLinkedList a -> (a -> Bool) -> IO (Maybe a) Source

Detect whether an element satisfying the specified predicate is contained in the list.

listFirst :: DoubleLinkedList a -> IO a Source

Return the first element.

listLast :: DoubleLinkedList a -> IO a Source

Return the last element.

freezeList :: DoubleLinkedList a -> IO [a] Source

Freeze the list and return its contents.