module HaskellWorks.Polysemy.Hedgehog.Eval
  ( evalIO_,
    evalM_,
    eval,
    evalM,
    evalIO,

  ) where

import qualified GHC.Stack                                      as GHC
import           HaskellWorks.Polysemy.Prelude

import           HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog
import           Polysemy

evalIO_ :: forall a r. ()
  => Member Hedgehog r
  => GHC.HasCallStack
  => IO a
  -> Sem r ()
evalIO_ :: forall a (r :: EffectRow).
(Member Hedgehog r, HasCallStack) =>
IO a -> Sem r ()
evalIO_ = Sem r a -> Sem r ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Sem r a -> Sem r ()) -> (IO a -> Sem r a) -> IO a -> Sem r ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IO a -> Sem r a
forall (r :: EffectRow) a.
(Member Hedgehog r, HasCallStack) =>
IO a -> Sem r a
evalIO

evalM_ :: forall a r. ()
  => Member Hedgehog r
  => GHC.HasCallStack
  => Sem r a
  -> Sem r ()
evalM_ :: forall a (r :: EffectRow).
(Member Hedgehog r, HasCallStack) =>
Sem r a -> Sem r ()
evalM_ = Sem r a -> Sem r ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Sem r a -> Sem r ())
-> (Sem r a -> Sem r a) -> Sem r a -> Sem r ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sem r a -> Sem r a
forall (r :: EffectRow) a.
(Member Hedgehog r, HasCallStack) =>
Sem r a -> Sem r a
evalM