The HTF lets you write HUnit tests (http://hunit.sourceforge.net) and QuickCheck (http://www.cs.chalmers.se/~rjmh/QuickCheck/) properties in an easy and convenient way. Additionally, the HTF provides a facility for testing programs by running them and comparing the actual output with the expected output (so called "file-based tests").
The HTF uses Template Haskell to collect all tests and properties, so you do not need to write boilerplate code for that purpose. Preprocessor macros provide you with file name and line number information for tests and properties that failed.
Requirements:
- GHC 6.4.1
- Cabal 1.1.3 (http://www.haskell.org/cabal)
- cpphs 1.0 (http://www.cs.york.ac.uk/fp/cpphs/) or cpp
Available via darcs:
darcs get --set-scripts-executable http://www.informatik.uni-freiburg.de/~wehr/darcs/HTF/
Send patches using darcs send to
hscurses is a Haskell binding to the NCurses library, a library of functions that manage an application's display on character-cell terminals. hscurses also provides some basic widgets implemented on top of the ncurses binding, such as a text input widget and a table widget.
The binding was originally written by John Meacham http://repetae.net/john/. Tuomo Valkonen http://modeemi.fi/~tuomov/ and Don Stewart http://www.cse.unsw.edu.au/~dons improved it and I finally added some basic widgets and packed it up as a standalone library.
Requirements: recent version of GHC (see the .cabal file for details)
and a Unix-like operating system
(the README
file lists all systems on which hscurses has been reported to work).
Available via darcs:
darcs get --set-scripts-executable http://www.informatik.uni-freiburg.de/~wehr/darcs/hscurses/
Send patches using darcs send to
Reactive objects are a convenient abstraction for writing programs which have to interact with a concurrent environment. A reactive object has two characteristics: the abandonment of all blocking operations and the unification of the concepts state and process. The former allows a reactive object to accept input from multiple sources without imposing any ordering on the input events. The latter prevents race conditions because the state of an object is only manipulated from the process belonging to the object.
Only a few programming languages exist that make the concept of reactive objects available to programmers. Unfortunately, all those systems seem to be either not actively maintained anymore or not really matured yet. In this paper we demonstrate how reactive objects can be incorporated into the existing general purpose programming language Haskell by making use of common extensions to Haskell. Our implementation is heavily inspired by the O'Haskell programming language. While O'Haskell is a standalone programming language not compatible with Haskell, our implementation comes as a Haskell library that smoothly integrates the concept of reactive objects into the world of regular functional programming.
Requirements: GHC 6.4
Available via darcs:
darcs get --set-scripts-executable http://www.informatik.uni-freiburg.de/~wehr/darcs/rhaskell/
Send patches using darcs send to
Paper:
Stefan Heimann and Matthias Neubauer
Reactive Objects for Haskell
Informal proceedings of the Fifth Symposium on Trends in Functional Languages (TFP 2004).
Munich, Germany. November 2004.
.ps.gz,
.pdf,
bibtex