seq -base
Sequential strategies provide ways to compositionally specify the degree of evaluation of a data type between the extremes of no evaluation and full evaluation. Sequential strategies may be viewed as complimentary to the parallel ones (see module Control.Parallel.Strategies).
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.
General-purpose finite sequences.
Evaluate the elements of an array according to the given strategy. Evaluation of the array bounds may be triggered as a side effect.
Evaluate the bounds of an array according to the given strategy.
Evaluate the elements of a foldable data structure according to the given strategy.
Evaluate each element of a list according to the given strategy. This function is a specialisation of seqFoldable to lists.
Evaluate the first n elements of a list according to the given strategy.
Evaluate the nth element of a list (if there is such) according to the given strategy. The spine of the list up to the nth element is evaluated as a side effect.
Handle sequence locations for bioinformatics
Version 0.5
Read and write BED and GTF format genome annotations
Version 0.2.1.1
Evaluate the keys and values of a map according to the given strategies.
a name for Control.Seq.Strategy, for documetnation only.
Sequential index numbers between 0.0 and 1.0 that allow arbitrarily inserting new numbers in between. They can possibly used for disk-based and other special containers, where adding a new element without changing the indexes of the other elements is important. Conceptually, SequentialIndex denotes a path to an element in an imaginary binary tree. However, leafs can only be on the right side of their parent. I.e. the path must end with a '1' (or be the path to the root node, 0.0). 1.0 denotes the invalid node.
Version 0.2
A sequence labeler based on Collins's sequence perceptron.
Version 0.2.3
This package provides access to ALSA sequencer (MIDI support). For audio support see alsa-pcm. Included are some simple example programs. For more example programs including a GUI, see the alsa-gui programs.
Version 0.6
Tests for the ALSA sequencer library.
Version 0.1
> { [ 1 ,2 .. 10 ] }
This module provides an overloaded function, deepseq, for fully evaluating data structures (that is, evaluating to "Normal Form").
A typical use is to prevent resource leaks in lazy IO programs, by forcing all characters from a file to be read. For example:
> import System.IO
> import Control.DeepSeq
>
> main = do
> h <- openFile "f" ReadMode
> s <- hGetContents h
> s `deepseq` hClose h
> return s
deepseq differs from seq as it traverses data structures deeply, for example, seq will evaluate only to the first constructor in the list:
> > [1,2,undefined] `seq` 3
> 3
While deepseq will force evaluation of all the list elements:
> > [1,2,undefined] `deepseq` 3
> *** Exception: Prelude.undefined
Another common use is to ensure any exceptions hidden within lazy fields of a data structure do not leak outside the scope of the exception handler, or to force evaluation of a data structure in one thread, before passing to another thread (preventing work moving to the wrong threads).
Find sequences within lists.
Version 0.1
deepseq: fully evaluates the first argument, before returning the second.
The name deepseq is used to illustrate the relationship to seq: evaluates the top level of its argument, deepseq traverses the entire data structure evaluating it completely.
deepseq can be useful for forcing pending exceptions, eradicating space leaks, or forcing lazy I/O to happen. It is also useful in conjunction with parallel Strategies (see the parallel package).
There is no guarantee about the ordering of evaluation. The implementation may evaluate the components of the structure in any order or in parallel. To impose an actual order on evaluation, use pseq from Control.Parallel in the parallel package.
Show more results