| Portability | Requires STM |
|---|---|
| Maintainer | joeyadams3.14159@gmail.com |
| Safe Haskell | Safe-Infered |
Data.STM.TList
Contents
Description
This module uses many names from Prelude, so consider importing it qualified:
import Data.STM.TList (TList) import qualified Data.STM.TList as TList
- type TList a = TVar (TCell a)
- data TCell a
- empty :: STM (TList a)
- emptyIO :: IO (TList a)
- cons :: a -> TList a -> STM (TList a)
- append :: TList a -> a -> STM (TList a)
- appendList :: TList a -> [a] -> STM (TList a)
- fromList :: [a] -> STM (TList a, TList a)
- uncons :: STM b -> (a -> TList a -> STM b) -> TList a -> STM b
- null :: TList a -> STM Bool
- drop :: Int -> TList a -> STM (TList a)
- end :: TList a -> STM (TList a)
- length :: TList a -> STM Int
- foldl' :: (a -> b -> a) -> a -> TList b -> STM a
- toList :: TList a -> STM [a]
The TList type
Construction
cons :: a -> TList a -> STM (TList a)Source
O(1). Prepend an item to the list, returning the new beginning of the list.
append :: TList a -> a -> STM (TList a)Source
O(1). Append an item to the list, returning the new write end.
The TList normally points to a TNil, a "hole" into which the next item
will be written. However, if it doesn't, append will silently overwrite
the next item. It is up to the application to ensure that the TList
points to a TNil, or that overwriting an item in this case is desirable.
appendList :: TList a -> [a] -> STM (TList a)Source
O(n). Append a list of items, returning the new write end.
fromList :: [a] -> STM (TList a, TList a)Source
O(n). Convert a pure list to a TList, returning the head (read end)
and tail (write end) of the list.
Traversal
These functions traverse the list strictly. They examine the list as
it is now; they do not retry when the end of the list is reached.
drop :: Int -> TList a -> STM (TList a)Source
O(n). Skip the given number of items. Return the end of the list if a
TNil is reached.