IOSpec: A pure specification of the IO monad.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.


This package consists of several modules, that give a pure specification of functions in the IO monad:

Besides these modules containing the specifications, there are a few other important modules:

There are several well-documented examples included with the source distribution.

[Skip to ReadMe]


Versions0.1, 0.1.1, 0.2, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.3, 0.3.1,,
Change logNone available
Dependenciesbase (>= && <5), mtl, QuickCheck (==2.*), Stream [details]
AuthorWouter Swierstra, Yusaku Hashimoto, Nikolay Amiantov, Bertram Felgenhauer
MaintainerBertram Felgenhauer <>
Home page
Source repositoryhead: git clone
UploadedFri Dec 28 21:31:01 UTC 2018 by BertramFelgenhauer




Maintainers' corner

For package maintainers and hackage trustees

Readme for IOSpec-

[back to package description]
IOSpec version
  Author: Wouter Swierstra <>
  Maintainer: Bertram Felgenhauer <>

IOSpec provides a library containing pure, executable specifications
of a few functions from the IO monad. 

Build instructions:

    $ runhaskell Setup.lhs configure
    $ runhaskell Setup.lhs build
    $ runhaskell Setup.lhs install

For further instructions, see:


Please have a look at the latest documentation available from:

To build the Haddock API execute the following command:
    $ runhaskell Setup.lhs haddock

This will require Haddock 2.0.

Check out the examples directory for the following examples:

    * Echo.hs - illustrates how to test the echo function.
    * Queues.hs - an implementation of queues using IORefs.
    * Channels.hs - an implementation of channels using MVars.
    * Sudoku.hs - a parallel Sudoku solver that uses STM and MVars
         based on Graham Hutton's version of Richard Bird's "Solving Sudoku".

Every example contains quite some comments, explaining how to use
the library.