module Test.QuickCheck.Exception where

import Control.Exception
  ( evaluate
  , try
  , Exception
  )

--------------------------------------------------------------------------
-- try evaluate

tryEvaluate :: a -> IO (Either Exception a)
tryEvaluate x = tryEvaluateIO (return x)

tryEvaluateIO :: IO a -> IO (Either Exception a)
tryEvaluateIO m = try (m >>= evaluate)
--tryEvaluateIO m = Right `fmap` m

--------------------------------------------------------------------------
-- the end.