IOSpec

A pure specification of the IO monad.

Version on this page:0.3
LTS Haskell 3.22:0.3
Stackage Nightly 2015-12-08:0.3
Latest on Hackage:0.3.1.2

See all snapshots IOSpec appears in

BSD-3-Clause licensed by Wouter Swierstra, Yusaku Hashimoto, Nikolay Amiantov
Maintained by Wouter Swierstra
This version can be pinned in stack with:IOSpec-0.3@sha256:9bceb7699539fe1c7b77aa5bba5ad1bf735469c98a24e716ac66017687331214,2146

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.