capture IO action's stdout and stderr
Choice for IO and lifted IO
Transform an IO action into a similar IO action that performs the original action only once.
You can choose to perform the original action in one of three ways:
* lazily (might never be performed)
* concurrently (eager)
Special thanks to shachaf and headprogrammingczar from #haskell irc for helping me reason about the behavior of this library.
An API for generating reactive objects, as used in the TIMBER programming language.
This library allows an application to extend the 'global state' hidden inside the IO monad with semi-arbitrary data. Data is required to be Typeable. The library provides an essentially unbounded number of key-value stores indexed by strings, with each key within the stores also being a string.
Package allowing type-safe I/O control
IOR monad is a wrapper around IO that allows region based resource management.
After GHC 7.2 a new `casMutVar#` primop became available, but was not yet exposed in Data.IORef. This package fills that gap until such a time as Data.IORef obsoletes it.
Further, in addition to exposing native Haskell CAS operations, this package contains "mockups" that imititate the same functionality using either atomicModifyIORef and unsafe pointer equality (in Data.CAS.Fake) or using foreign functions (Data.CAS.Foreign). These alternatives are useful for debugging.
Note that the foreign option does not operate on IORefs and so is directly interchangeable with `Data.CAS` and `Data.CAS.Fake` only if the interface in `Data.CAS.Class` is used.
This package consists of several modules, that give a pure specification of functions in the IO monad:
* Test.IOSpec.Fork: a pure specification of forkIO.
* Test.IOSpec.IORef: a pure specification of most functions that create and manipulate on IORefs.
* Test.IOSpec.MVar: a pure specification of most functions that create and manipulate and MVars.
* Test.IOSpec.STM: a pure specification of atomically and the STM monad.
* Test.IOSpec.Teletype: a pure specification of getChar, putChar, and several related Prelude functions.
Besides these modules containing the specifications, there are a few other important modules:
* Test.IOSpec.Types: defines the IOSpec type and several amenities.
* Test.IOSpec.VirtualMachine: defines a virtual machine on which to execute pure specifications.
* Test.IOSpec.Surrogate: a drop-in replacement for the other modules. Import this and recompile your code once you've finished testing and debugging.
There are several well-documented examples included with the source distribution.
POSIX IO support. These types and functions correspond to the unix functions open(2), close(2), etc. For more portable functions which are more like fopen(3) and friends from stdio.h, see System.IO.
This package provides efficient conversion routines between a range of array types and Accelerate arrays.
Sequence a set of Alternative actions in each possible order, based on "Parsing Permutation Phrases", by Arthur Baars, Andres Loeh and S. Doaitse Swierstra, Haskell Workshop 2001. This is particularly useful for constructing a parser for permutations of elements. This version has a slightly different interface from the paper.
ADPfusion combines stream-fusion (using the stream interface provided by the vector library) and type-level programming to provide highly efficient dynamic programming combinators.
From the programmers' viewpoint, ADPfusion behaves very much like the original ADP implementation http://bibiserv.techfak.uni-bielefeld.de/adp/ developed by Robert Giegerich and colleagues, though both combinator semantics and backtracking are different.
The library internals, however, are designed not only to speed up ADP by a large margin (which this library does), but also to provide further runtime improvements by allowing the programmer to switch over to other kinds of data structures with better time and space behaviour. Most importantly, dynamic programming tables can be strict, removing indirections present in lazy, boxed tables.
As an example, even rather complex ADP code tends to be completely optimized to loops that use only unboxed variables (Int# and others, indexIntArray# and others).
Completely novel (compared to ADP), is the idea of allowing efficient monadic combinators. This facilitates writing code that performs backtracking, or samples structures stochastically, among others things.
This version is still highly experimental and makes use of multiple recent improvements in GHC. This is particularly true for the monadic interface.
Long term goals: Outer indices with more than two dimensions, specialized table design, a combinator library, a library for computational biology.
Two algorithms from the realm of computational biology are provided as examples on how to write dynamic programming algorithms using this library: http://hackage.haskell.org/package/Nussinov78 and http://hackage.haskell.org/package/RNAFold.
Changes since 0.0.1.0:
* compatibility with GHC 7.4
* note: still using fundeps & and TFs together. The TF-only version does not optimize as well (I know why but not yet how to fix it)
This package is deprecated, Please use io-choice.
Annotations provides utility functions to make working with annotated trees easier. There are two implementations: one for working with open datatypes that explicitly make their child positions accessible through a type argument, and one for working with MultiRec datatypes.
Parser combinators make it easy to construct trees annotated with position information. For the MultiRec implementation, there is the Yield monad that allows construction of trees in postorder.
Error algebras allow destruction of trees using catamorphisms. The algebra is allowed to indicate failure in which case the error is automatically coupled with the annotation at the position at which the error occurred.
1976 US Standard Atmosphere with dimensions from dimensional package.
This is a thin wrapper on top of the atmos package.
1976 US Standard Atmosphere with dimensions from dimensional-tf package.
This is a thin wrapper on top of the atmos package.
I recommend using the atmos-dimensional package instead of this until atmos-dimensional-tf is more stable.
This is a prototype implementation of the idea presented in Combining Syntactic and Semantic Bidirectionalization by Janis Voigtlaender, Zhenjiang Hu, Kazutaka Matsuda and Meng Wang.
This package builds two executables to experiment with the system, a command line program "b18-combined" and a CGI based web interface "b18n-combined-cgi". The latter is also available online at http://www.kb.ecei.tohoku.ac.jp/~kztk/b18n-combined/
Show more results