module Hedgehog.Classes.Common.IO ( genIO , showIO ) where import Hedgehog import System.IO.Unsafe (unsafePerformIO) genIO :: Gen a -> Gen (IO a) genIO :: Gen a -> Gen (IO a) genIO Gen a gen = (a -> IO a) -> Gen a -> Gen (IO a) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure Gen a gen showIO :: Show a => IO a -> String showIO :: IO a -> String showIO IO a io = IO String -> String forall a. IO a -> a unsafePerformIO (IO String -> String) -> IO String -> String forall a b. (a -> b) -> a -> b $ do String x <- (a -> String) -> IO a -> IO String forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap a -> String forall a. Show a => a -> String show IO a io let y :: String y = String "IO " String -> String -> String forall a. [a] -> [a] -> [a] ++ String x String -> IO String forall (f :: * -> *) a. Applicative f => a -> f a pure String y