| containers-0.2.0.0: Assorted concrete container types | Contents | Index |
|
Data.Sequence | Portability | portable | Stability | experimental | Maintainer | libraries@haskell.org |
|
|
|
|
|
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,
which should be a positive integer less than the size of the sequence.
If the position is out of range, index fails with an error.
|
|
adjust :: (a -> a) -> Int -> Seq a -> Seq a |
O(log(min(i,n-i))). Update the element at the specified position.
If the position is out of range, the original sequence is returned.
|
|
update :: Int -> a -> Seq a -> Seq a |
O(log(min(i,n-i))). Replace the element at the specified position.
If the position is out of range, the original sequence is returned.
|
|
take :: Int -> Seq a -> Seq a |
O(log(min(i,n-i))). The first i elements of a sequence.
If i is negative, take i s yields the empty sequence.
If the sequence contains fewer than i elements, the whole sequence
is returned.
|
|
drop :: Int -> Seq a -> Seq a |
O(log(min(i,n-i))). Elements of a sequence after the first i.
If i is negative, take i s yields the whole sequence.
If the sequence contains fewer than i elements, the empty sequence
is returned.
|
|
splitAt :: Int -> Seq a -> (Seq a, Seq a) |
O(log(min(i,n-i))). Split a sequence at a given position.
splitAt i s = (take i s, drop i s).
|
|
Transformations
|
|
reverse :: Seq a -> Seq a |
O(n). The reverse of a sequence.
|
|
Produced by Haddock version 2.3.0 |