A pure specification of the IO monad.
This package consists of several modules, that give a pure specification of functions in the IO monad:
Test.IOSpec.Fork
: a pure specification offorkIO
.Test.IOSpec.IORef
: a pure specification of most functions that create and manipulate onIORefs
.Test.IOSpec.MVar
: a pure specification of most functions that create and manipulate andMVars
.Test.IOSpec.STM
: a pure specification ofatomically
and theSTM
monad.Test.IOSpec.Teletype
: a pure specification ofgetChar
,putChar
, and several related Prelude functions.
Besides these modules containing the specifications, there are a few other important modules:
Test.IOSpec.Types
: defines theIOSpec
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.