sequence -package -template-haskell
Evaluate each action in the sequence from left to right, and collect the results.
Evaluate each action in the sequence from left to right, and ignore the results.
Evaluate each monadic action in the structure from left to right, and ignore the results.
Evaluate each action in the structure from left to right, and ignore the results.
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
* Ralf Hinze and Ross Paterson, "Finger trees: a simple general-purpose data structure", Journal of Functional Programming 16:2 (2006) pp 197-217. http://www.soi.city.ac.uk/~ross/papers/FingerTree.html
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.
The subsequences function returns the list of all subsequences of the argument.
> subsequences "abc" == ["","a","b","ab","c","ac","bc","abc"]