|
| 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. |
|
| Deconstruction |
|
| 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.6 |