|
| Data.Sequence | | Portability | portable | | Stability | experimental | | Maintainer | ross@soi.city.ac.uk |
|
|
|
|
|
| Description |
General purpose finite sequences.
Apart from being finite and having strict operations, sequences
also differ from lists in supporting a wider variety of operations
efficiently.
An amortized running time is given for each operation, with n referring
to the length of the sequence and i being the integral index used by
some operations. These bounds hold even in a persistent (shared) setting.
The implementation uses 2-3 finger trees annotated with sizes,
as described in section 4.2 of
Note: Many of these operations have the same names as similar
operations on lists in the Prelude. The ambiguity may be resolved
using either qualification or the hiding clause.
|
|
| Synopsis |
|
|
|
| Documentation |
|
| data Seq a |
| General-purpose finite sequences.
| Instances | |
|
|
| Construction
|
|
| empty :: Seq a |
| O(1). The empty sequence.
|
|
| singleton :: a -> Seq a |
| O(1). A singleton sequence.
|
|
| (<|) :: a -> Seq a -> Seq a |
| O(1). Add an element to the left end of a sequence.
Mnemonic: a triangle with the single element at the pointy end.
|
|
| (|>) :: Seq a -> a -> Seq a |
| O(1). Add an element to the right end of a sequence.
Mnemonic: a triangle with the single element at the pointy end.
|
|
| (><) :: Seq a -> Seq a -> Seq a |
| O(log(min(n1,n2))). Concatenate two sequences.
|
|
| fromList :: [a] -> Seq a |
| O(n). Create a sequence from a finite list of elements.
There is a function toList in the opposite direction for all
instances of the Foldable class, including Seq.
|
|
| Deconstruction
|
|
| Additional functions for deconstructing sequences are available
via the Foldable instance of Seq.
|
|
| Queries
|
|
| null :: Seq a -> Bool |
| O(1). Is this the empty sequence?
|
|
| length :: Seq a -> Int |
| O(1). The number of elements in the sequence.
|
|
| Views
|
|
| data ViewL a |
| View of the left end of a sequence.
| | Constructors | | EmptyL | empty sequence
| | (:<) a (Seq a) | leftmost element and the rest of the sequence
|
| Instances | |
|
|
| viewl :: Seq a -> ViewL a |
| O(1). Analyse the left end of a sequence.
|
|
| data ViewR a |
| View of the right end of a sequence.
| | Constructors | | EmptyR | empty sequence
| | (:>) (Seq a) a | the sequence minus the rightmost element,
and the rightmost element
|
| Instances | |
|
|
| viewr :: Seq a -> ViewR a |
| O(1). Analyse the right end of a sequence.
|
|
| Indexing
|
|
| index :: Seq a -> Int -> a |
| O(log(min(i,n-i))). The element at the specified position
|
|
| adjust :: (a -> a) -> Int -> Seq a -> Seq a |
| O(log(min(i,n-i))). Update the element at the specified position
|
|
| update :: Int -> a -> Seq a -> Seq a |
| O(log(min(i,n-i))). Replace the element at the specified position
|
|
| take :: Int -> Seq a -> Seq a |
| O(log(min(i,n-i))). The first i elements of a sequence.
|
|
| drop :: Int -> Seq a -> Seq a |
| O(log(min(i,n-i))). Elements of a sequence after the first i.
|
|
| splitAt :: Int -> Seq a -> (Seq a, Seq a) |
| O(log(min(i,n-i))). Split a sequence at a given position.
|
|
| Transformations
|
|
| reverse :: Seq a -> Seq a |
| O(n). The reverse of a sequence.
|
|
| Produced by Haddock version 0.8 |