expiring-mvar provides the type ExpiringMVar. ExpiringMVar is a container for a single value. When creating an ExpiringMVar, a thread is spawned which deletes the value held in the ExpiringMVar after a given period of time. The timer can be reset, cancelled, or restarted with a new time amount.
Synchronous and Asynchronous exceptions which are explicit in the type signature. The first ones are very similar to Either and Control.Monad.Error.ErrorT. The second ones are used for System.IO.readFile and System.IO.hGetContents. This package is a proposal for improved exception handling in Haskell. It strictly separates between handling of exceptional situations (file not found, invalid user input, see http://www.haskell.org/haskellwiki/Exception) and (programming) errors (division by zero, index out of range, see http://www.haskell.org/haskellwiki/Error). Handling of the first one is called "exception handling", whereas handling of errors is better known as "debugging".
For applications see the packages midi, spreadsheet, http-monad.
Although I'm not happy with the identifier style of the Monad Transformer Library (partially intended for unqualified use) I have tried to adopt it for this library, in order to let Haskell programmers get accustomed easily to it.
To do: Because many people requested it, we will provide a bracket function that frees a resource both when an exception and an error occurs, that is, it combines exception handling and debugging. However note that freeing resources in case of an error is dangerous and may cause further damage.
The module System.IO.ExplicitIOModes exports a Handle to a file which is parameterized with the IOMode the handle is in. All operations on handles explicitly specify the needed IOMode. This way it is impossible to read from a write-only handle or write to a read-only handle for example.
See the explicit-iomodes-bytestring/text package for ByteString/Text operations.
Extends explicit-iomodes with ByteString operations
Extends explicit-iomodes with Text operations
This package implements a monad for non-deterministic computations with sharing.
Very first prototype of a command line tool to extract pixel positions matching a given colour to help reconstruct plot data. See example.ods or example.xls, README and Main.hs on the project homepage to figure out its usage.
Generalization of parsec's expression parser.
This package allows defining simulation experiments for the Aivika package. Such experiments define in declarative manner what should be simulated and in which view the simulation results should be generated. It can be charts, tables and so on.
The library is extensible and you can add new views for the results.
This package complements the Aivika and Aivika Experiment packages with charting capabilites. Now the simulation results can be represented as charts.
It was intentionally made a separate package as it has heavy dependencies on Haskell Charts, Cairo and GTK.
Port of parsec's expression parser to attoparsec.
Allows you to generate hexpat node trees using blaze syntax.
Boolean expressions with various representations and search queries.
Let's make music with text! We can use Csound to describe our music. Csound has so many fantastic sound generators. It's very efficient. But sometimes Csound is too low level. So many details: integer identifiers for instruments and arrays, should I use control rate or audio rate signals, lack of abstractions, no nested expressions and it has limited set of types. This library embeds Csound in Haskell. We can use powerful Csound's primitives and glue them together with Haskell abstractions. The module Csound.Base exports all types and functions.
* Quickstart guide http://github.com/anton-k/csound-expression/blob/master/tutorial/QuickStart.markdown
* Overview of the library http://github.com/anton-k/csound-expression/blob/master/tutorial/Overview.markdown
* Introduction to Csound and library for Haskell users http://github.com/anton-k/csound-expression/blob/master/tutorial/CsoundInstro.markdown
* There are examples in the source code archive http://github.com/anton-k/csound-expression/tree/master/examples.
* Keep it simple and compact (as functional as possible).
* Make it open (No dependency on Score-generation libraries. Score (or list of events) is represented with type class. You can use your favorite Score-generation library if you provide an instance for the CsdSco type class. Currently there is support for temporal-music-notation library (see temporal-csound package).
How to install (for Csound and Haskell users)
To use the library we need:
* GHC - haskell compiler. This library uses GHC-specific features (www.haskell.org/ghc).
* cabal-install to install haskell packages (www.haskell.org/cabal).
* Csound compiler (version 5.13 or higher). You must get it installed on your system. Since we are going to generate the csound code we need to compile it to sound somehow. We can find out how to install the Csound on www.csounds.com. To test whether csound is installed open the command line and type:
It should print a long message with version and available flags and libraries.
If everything is installed to install the library we can open the command line terminal and type:
> cabal install csound-expression
Acknowledgements (I'd like to mention those who supported me a lot with their music and ideas):
* music: entertainment for the braindead, annsannat & alizbar, toe, iamthemorning, atoms for piece / radiohead, loscil, boards of canada, Hozan Yamamoto, Tony Scott and Shinichi Yuize.
* ideas: Conal Elliott, Oleg Kiselyov, Paul Hudak, Gabriel Gonzalez, Rich Hickey and Csound's community.
Show more results