seq -parallel

seq :: a -> b -> b
base Prelude
Evaluates its first argument to head normal form, and then returns its second argument as the result.
sequence :: Monad m => [m a] -> m [a]
base Prelude, base Control.Monad
Evaluate each action in the sequence from left to right, and collect the results.
sequence_ :: Monad m => [m a] -> m ()
base Prelude, base Control.Monad
Evaluate each action in the sequence from left to right, and ignore the results.
sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)
base Data.Traversable
sequence_ :: (Foldable t, Monad m) => t (m a) -> m ()
base Data.Foldable
Evaluate each monadic action in the structure from left to right, and ignore the results.
sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
base Data.Traversable
sequenceA_ :: (Foldable t, Applicative f) => t (f a) -> f ()
base Data.Foldable
Evaluate each action in the structure from left to right, and ignore the results.
package seqloc
Handle sequence locations for bioinformatics Version
package seqloc-datafiles
Read and write BED and GTF format genome annotations Version
sequenceQ :: [Q a] -> Q [a]
template-haskell Language.Haskell.TH.Syntax
package sequential-index
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
package sequor
A sequence labeler based on Collins's sequence perceptron. Version 0.4.2
data Seq a
containers Data.Sequence
General-purpose finite sequences.
module Data.Sequence
containers Data.Sequence
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. 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.
SeqPacket :: SocketType
network Network.Socket
module Text.Regex.Posix.Sequence
regex-posix Text.Regex.Posix.Sequence
This provides String instances for RegexMaker and RegexLike based on Text.Regex.Posix.Wrap, and a (RegexContext Regex String String) instance. To use these instance, you would normally import Text.Regex.Posix. You only need to import this module to use the medium level API of the compile, regexec, and execute functions. All of these report error by returning Left values instead of undefined or error or fail.
eILSEQ :: Errno
base Foreign.C.Error
subsequences :: [a] -> [[a]]
base Data.List
The subsequences function returns the list of all subsequences of the argument. > subsequences "abc" == ["","a","b","ab","c","ac","bc","abc"]
package alsa-seq
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
package alsa-seq-tests
Tests for the ALSA sequencer library. Version 0.1
ArithSeqE :: Range -> Exp
template-haskell Language.Haskell.TH.Syntax, template-haskell Language.Haskell.TH
> { [ 1 ,2 .. 10 ] }
arithSeqE :: RangeQ -> ExpQ
template-haskell Language.Haskell.TH.Lib, template-haskell Language.Haskell.TH
type ClauseQ = Q Clause
template-haskell Language.Haskell.TH.Lib, template-haskell Language.Haskell.TH
closeQuick :: HStream bufType => HandleStream bufType -> IO ()
HTTP Network.TCP
package containers-deepseq
module Control.DeepSeq
deepseq Control.DeepSeq
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).
package data-list-sequences
Find sequences within lists. Version 0.1
deepseq :: NFData a => a -> b -> b
deepseq Control.DeepSeq
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.
package deepseq
This package provides methods for fully evaluating data structures (&quot;deep evaluation&quot;). Deep evaluation is often used for adding strictness to a program, e.g. in order to force pending exceptions, remove space leaks, or force lazy I/O to happen. It is also useful in parallel programs, to ensure pending work does not migrate to the wrong thread. The primary use of this package is via the deepseq function, a &quot;deep&quot; version of seq. It is implemented on top of an NFData typeclass (&quot;Normal Form Data&quot;, data structures with no unevaluated components) which defines strategies for fully evaluating different data types. If you want to automatically derive NFData instances via the GHC.Generics facility, there is a companion package <http:hackage.haskell.orgpackagedeepseq-generics deepseq-generics> which builds on top of this package. Version
package deepseq-generics
This package provides a GHC.Generics-based Control.DeepSeq.Generics.genericRnf function which can be used for providing a rnf implementation. See the documentation for the genericRnf function in the Control.DeepSeq.Generics module to get started. The original idea was pioneered in the generic-deepseq package (see for more information). This package differs from the generic-deepseq package by working in combination with the existing deepseq package as opposed to defining a conflicting drop-in replacement for deepseq's Control.Deepseq module. Version
package deepseq-th
This package provides a Template Haskell based mechanism for deriving optimised NFData instances for custom data types. See documentation in Control.DeepSeq.TH for more information. See also the deepseq-generics package ( for a less experimental approach. Version
package dph-prim-seq
Sequential array data type and stream fuctions, along with a sequential reference implementation of the segmented array API defined in dph-prim-interface. Version
package dph-seq
This package used to export DPH array primitives, but they're in dph-prim-seq now. Version
package free-theorems-seq
Given a term, this program calculates a set of &quot;optimal&quot; free theorems that hold in a lambda calculus with selective strictness. It omits totality (in general, bottom-reflection) and other restrictions when possible. The underlying theory is described in the paper &quot;Taming Selective Strictness&quot; (ATPS'09) by Daniel Seidel and Janis Voigtländer. A webinterface for the program is running online at or available offline via the package Related to this package you may be interested in the online free theorem generator at that is also available offline via Additionally interesting may be the counterexample generator for free theorems that exemplifies the need of strictness conditions imposed by general recursion. It can be downloaded at or used via a webinterface at Version 1.0
package free-theorems-seq-webui
This package provides access to the functionality of through a web interface. An online version of the interface is running at Version
package generic-deepseq
This package provides a deepseq function analogous to seq, except that it traverses the entire data structure, evaluating it fully, and not just up to head normal form. Using lists as an example: > > [1,2,undefined] `seq` 3 > 3 Whereas with deepseq: > > [1,2,undefined] `deepseq` 3 > *** Exception: Prelude.undefined Unlike the deepseq package, this implementation is based on the GHC.Generics framework as found in GHC >= 7.2, so that it can generate instances automatically for any datatype that has a Generic instance, without further code. > data MyType = MyType String Int (Maybe Double) > deriving Generic > instance DeepSeq MyType Changes in version * Vastly improved performance. As a consequence of these changes, the member function of the DeepSeq class is now rnf, instead of deepseq. * New instances for functions, Ratio and Complex types. Changes in version * Fix the U1 and V1 instances. Changes in version * No functional changes, updated to correct the URLs of the repository and the issue tracker. Version
IsEqualTo :: Relation
GLUT Graphics.UI.GLUT.Initialization
package live-sequencer
An editor shows a textual description of music (like Haskore), an interpreter computes and emits a stream of MIDI events, and (that's the main point) the user can change the program on the fly. Additionally the state of the interpreter is shown in the form of the current reduced term for educational and debugging purposes. * example usage ***** The live-sequencer does not make music itself, its entire task is to control other software or hardware synthesizers. That is, in order to hear something you need a working MIDI synthesizer such as the sampling based software synthesizer TiMidity. You may run TiMidity and the live-sequencer this way: > timidity -iA & > live-sequencer-gui --connect-to TiMidity Simplesong & This should give you an ongoing stream of notes. Then change one of the numbers that appear in the lines like qn = 300 and press CTRL-R for &quot;reloading&quot; that module into the interpreter. This should immediately have an effect, namely increasing the tempo of the melody. You may also alter a note name like c 4 to cis 4, then reload, then undo the modification and reload, again, after a while. This is the main idea of changing the song while it is playing. The way the changes are applied warrants that the change takes effect when the time comes. Music is not interrupted and does not need to be restarted for reacting to changes. The overall task performed by the sequencer is to lazily evaluate a term called main that is a list of events. The value of main is a stream of midi events (On/Off pitch velocity, PgmChange, Controller) or (Wait milliseconds). You may wrap a MIDI event in a Channel constructor in order to assign the event to the particular MIDI channel. If you omit this constructor then the event is put to channel 0. In each step, the head of the main stream gets reduced to head normal form (with : at the top), and the first arg of the : gets fully expanded and it must be a MIDI event. * input language ***** The used language is syntactically almost a subset of Haskell with only strict pattern matching and pattern matching only at the definition level (no case), no local bindings (no lambda, let, where), no types (no type inference, type signatures and type declarations are skipped), and with diet syntax (i.e. drastically reduced syntactic sugar, like no layout rule, no do syntax, no list comprehension, no operator sections). Semantics is similar to lazy evaluation, but we have no sharing. The design goal is that code can be changed while the program is running. This implies that evaluation of one expression may give different results at different times (e.g., during a live performance, one changes some chords of a musical theme). In turn, this implies that we do not store and share results of evaluations, hence, we don't have local bindings. You may import and use the special functions Controls.checkBox, Controls.slider from the Controls module. For every call to these functions a widget is added to the control window and the state of the widget is the result of the function call. Technically every change of these widgets internally adds or updates a rule in the Controls module. The effect is very similar to updating a value definition in a module and then reloading that module to the interpreter, but using the widgets is more intuitive. * Offline rendering ***** In the library interface of this package we provide the basic Live-Sequencer modules in order to allow offline rendering of music that you programmed within the Live-Sequencer. You may generate a standard MIDI file using functions from the Render module. To this end load your song module into GHCi and call > YourModule> Render.writeStream &quot;yoursong.mid&quot; yourSong * HTTP access ***** You may open a browser and view all modules under http://localhost:8080/. If the user of the GUI inserts comments like this one: > ---------------- , then it is possible to modify the content below this mark via HTTP. This way multiple people can participate in the composition process. The recommended situation is a room with a data projector and a loudspeaker, where the conductor explains the functions to the auditory and the participants can watch the screen and listen to the music. You may choose any other port using the command line option --http-port. If you want to use a system port like the standard HTTP port 80, we recommend to configure a firewall to redirect the external port 80 to the internal user port. We discourage from starting the live-sequencer as root user. You may disable the HTTP server altogether by compiling with cabal install -f-httpServer. * Execution modes ***** There are three modes of execution that you can choose from the Execution menu: * Real-time: This is the mode for musical live performances. The interpreter waits according to the Wait elements in the main list. * Slow motion: This mode is for demonstration and debugging. You can alter the speed using CTRL-< and CTRL->. * Single step: This mode is for demonstration, debugging and as a pause mode, when the interpreter reaches the end of the main list. You can trigger evaluation of the next element using CTRL-N. You can perform a single reduction with CTRL-U, which also highlights the rule that will be applied next. Changes to the program are only respected when an element is completely reduced and sent via MIDI. Unfortunately it is currently not possible to undo a step. * Editing ***** You can change a module name by altering the module identifier between the module and where keywords and then triggering module reload. The same way you can load new modules by adding import lines and reloading the module. Alternatively, you may create new modules or close old ones using functions from the File menu. For composition it is useful to play parts of the music. You can do this by simply placing the cursor within an identifier or by marking an expression and then call Play term from the Execution menu. This will make the marked expression the current term and start playing. Once the music is playing you can change it by altering the module and reload it. However you may find out that you cannot do a certain modification this way. In this case you can mark an expression that denotes a stream transformation function and call the Apply term menu item. This will apply the marked function to the current term. Useful functions are: * merge newTrack for adding a new track simultaneously. However, mind the latency! * flip append newTrack for appending some events to the current music. * dropTime time for skipping a part of the music. However this may skip some Off events and this yields hanging tones. Additionally you may exceed the number of maximally allowed reductions. * skipTime time for skipping a part of the music. This one only removes or shortens Wait constructors. Thus all events are played but you risk exceeding the limit for playing many events at once. * compressTime acceleration time for accelerating the music for a certain time. This should circumvent the problems of dropTime and skipTime. * Limits ***** Without some safety belts it would be very easy to consume all memory or all processing power by accident or by people who contribute malicious code via HTTP. Thus we have added some limits. These have reasonable default values but you can adjust them to your needs via command line options at startup. These are the limits you can set: * maximum number of reduction steps per list element: With this limit you can prevent infinite loops. * term size: With this limit you can prevent memory leaks. * term depth: With this limit you can prevent unbalanced expression trees. Unbalanced trees do not consume more memory than balanced ones, but they consume considerably more graphical space on pretty-printing. * maximum number of events per time period: If your song is too fast or does not contain any Wait elements at all, your machine will run out of processing power. Thus you can restrict the number of events generated in a certain period of time. It is controlled by two options: --event-period sets the time period in milliseconds whereas --max-events-per-period sets the maximum number of events within this time period. In principle you can consider this a ratio but you cannot simply cancel it. E.g. both --event-period=100 --max-events-per-period=15 and --event-period=1000 --max-events-per-period=150 describe the same ratio, the difference is how liberal is the sequencer with respect to exceeding the ratio for a short time. Read the first setting as: &quot;For 15 adjacent events, the duration between the first and the last one must be at least 100ms.&quot; That is, if you emit 20 events simultaneously every second, then the first setting will forbid this, and the second setting will allow it. Thus we recommend to first set --max-events-per-period to the number of events that you want to emit simultaneously and then set --event-period large enough to match the power of your machine. * ALSA ***** Using the --new-out-port option you may add more ALSA MIDI ports. Every port extends the range of MIDI channels by 16 new logical channels. That is Channel 40 ev sends an event to MIDI channel 8 at the second newly added ALSA port (because 40 = 2*16+8). Every --connect-to option refers to the latest added port. Example: > live-sequencer --connect-to Synth0 --new-out-port out1 --connect-to > Synth1 --new-out-port out2 --connect-to Synth2 You do not need to connect to any synthesizer at startup. You may connect or disconnect the live-sequencer to any synthesizer once it is running using aconnect (command line) or kaconnect, alsa-patch-bay, patchage (graphical interfaces). The live-sequencer itself can be controlled to some extent. You may start the live-sequencer this way > live-sequencer --connect-from YourMidiController or connect to it once it is running. This enables the following functions: * If you press a key on your MIDI keyboard named YourMidiController, then the according note name is inserted in the current module. However, note durations cannot be preserved and velocities are ignored, as well. Thus don't expect that the live-sequencer captures complex songs, this function is just intended as assistance for note input. * You can control execution of the live-sequencer using MIDI Machine Control SysEx messages. Some MIDI controller keyboards have transportation buttons that support those messages. The supported MMC commands are: * RECORD STROBE: Toggle between receiving and ignoring note input from MIDI keyboard * PLAY: Restart the interpreter * STOP: Halt the interpreter and turn sound off * PAUSE: Toggle between real time and single step mode * FAST FORWARD: Next element in single step mode Version 0.0.4
package polyseq
Given a term, this program calculates a set of &quot;optimal&quot; free theorems that hold in a lambda calculus with selective strictness. It omits totality (in general, bottom-reflection) and other restrictions when possible. The underlying theory is described in the paper &quot;Taming Selective Strictness&quot; (ATPS'09) by Daniel Seidel and Janis Voigtländer. Version
pseq :: a -> b -> b
base GHC.Conc.Sync, base GHC.Conc

Show more results