{-# 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)