{-# LANGUAGE TemplateHaskell, KindSignatures, RankNTypes, FlexibleInstances, UndecidableInstances #-} module Data.TMS.Dbg ( -- |Constraint for monads which will require `MonadIO` when -- debugging is activated. Debuggable, -- |The quoted code will be run when debugging is activated. dbg ) where import Language.Haskell.TH import Data.TMS.ChooseDebugging (debugging) import Control.Monad.IO.Class $(Monad m a -> Q Exp Monad m -> Debuggable m forall (m :: * -> *). Monad m => Monad m forall (m :: * -> *). Monad m -> Debuggable m $cp1Debuggable :: forall (m :: * -> *). Monad m => Monad m dbg :: a -> Q Exp debugging)