effectful-zoo-0.0.3.0: components/hedgehog/Effectful/Zoo/Hedgehog/Effect/HedgehogGen.hs
{- HLINT ignore "Eta reduce" -}
{-# OPTIONS_GHC -Wno-orphans #-}
module Effectful.Zoo.Hedgehog.Effect.HedgehogGen
( HedgehogGen,
HedgehogGenEnv(..),
askHedgehogGenEnv,
runHedgehogGenProperty,
) where
import Effectful
import Effectful.Concurrent.STM
import Effectful.Dispatch.Static
import Effectful.Zoo.Core
import HaskellWorks.Prelude
import Hedgehog qualified as H
-- | An effect for interacting with the filesystem.
data HedgehogGen :: Effect
type instance DispatchOf HedgehogGen = Static WithSideEffects
newtype instance StaticRep HedgehogGen = HedgehogGen HedgehogGenEnv
newtype HedgehogGenEnv
= HedgehogGenEnv (TMVar (H.PropertyT IO ()))
askHedgehogGenEnv :: ()
=> r <: HedgehogGen
=> Eff r HedgehogGenEnv
askHedgehogGenEnv = do
HedgehogGen env <- getStaticRep
pure env
runHedgehogGenProperty :: ()
=> r <: IOE
=> TMVar (H.PropertyT IO ())
-> Eff (HedgehogGen : r) a
-> Eff r a
runHedgehogGenProperty tvAction =
evalStaticRep (HedgehogGen (HedgehogGenEnv tvAction))