{-# LANGUAGE EmptyDataDecls, TypeOperators #-} -- | This module contains a few type signatures to help replace pure -- specifications by their effectful counterparts. module Test.IOSpec.Surrogate ( -- * The IOSpec type IOSpec -- * The specifications , ForkS , MVarS , IORefS , STMS , Teletype , (:+:) ) where -- | The @IOSpec f a@ is merely type synonym for @IO a@. Once you've -- tested a module, you can use these definitions to avoid having to -- change your type signatures. -- -- Note that because this definition of 'IOSpec' ignores its @f@ -- argument, each of 'ForkS', 'MVarS', etc., is simply an empty data -- type. type IOSpec f a = IO a data ForkS data MVarS data IORefS data STMS data Teletype data (f :+: g)