{-# LANGUAGE TemplateHaskell, DeriveDataTypeable #-} import Data.Data (Data, Typeable) import FileLocation import Control.Exception.Base (SomeException, Exception(..)) import Prelude hiding (catch) import Control.Exception.Lifted (catch) data AException = AException String deriving (Show, Typeable) instance Exception AException main = do let _ = debugMsgIf "Not Visble" id False let x = debugMsgIf "debugMsgIf" (\xs -> head xs == 1) [1,2,3] putStrLn . show $ $(dbgMsg "Msg TH") $ debugMsg "Msg plain" $ $(dbg) $ debug $ $(trc "trc") x ltraceM "traceM" x debugM x ($thrwIO AException) `catch` \e -> putStrLn ("Caught " ++ show (e :: AException)) ($(thrwsIO "doh!") AException) `catch` \e -> putStrLn ("Caught " ++ show (e :: AException)) ($fromJst Nothing) `catch` \e -> putStrLn ("Caught " ++ show (e :: SomeException)) ($fromRht (Left "Lefty")) `catch` \e -> putStrLn ("Caught " ++ show (e :: SomeException)) $undef `catch` \e -> putStrLn ("Caught " ++ show (e :: SomeException)) $(err "Oh no!")