[Logging Monad simplified
martin.hofmann@uni-bamberg.de**20081126154240
 EL renamed to LM
 LM is not a MonadTransformer anymore
 changes propagated
] hunk ./src/Logging.hs 11
+
hunk ./src/Logging/Logger.hs 3
-(
-    
-    runELT,  runEL,
-    Log, Logger, Message, Priority,
-    ELog(..),
-    ELT,
-    EL,
-    
-    pnd, skip,
-    
-    module Control.Monad , 
-    module Control.Monad.Writer , 
-    module Control.Monad.State,
-    module Control.Monad.Trans,
-    module Language.Haskell.TH
-    ) 
+--(
+--    
+--    runELT,  runEL,
+--    Log, Logger, Message, Priority,
+--    LM, 
+--    logDE,logIN,logNO,logWA,logER,logCR,logAL,logEM,
+--    llogDE,llogIN,llogNO,llogWA,llogER,llogCR,llogAL,llogEM
+--    pnd, skip,
+--    
+--    module Control.Monad , 
+--    module Control.Monad.Writer , 
+--    module Control.Monad.State,
+--    module Control.Monad.Trans,
+--    module Language.Haskell.TH
+--    ) 
hunk ./src/Logging/Logger.hs 88
-class ( MonadState LogState m
-      , MonadWriter Log m) => ELog m where   
-           
-    logDE,logIN,logNO,logWA,logER,logCR,logAL,logEM   :: 
-        (MonadWriter Log m, MonadState LogState m) =>
-               Message -> m ()           
-    logDE = logging DEBUG
-    logIN = logging INFO
-    logNO = logging NOTICE
-    logWA = logging WARNING
-    logER = logging ERROR
-    logCR = logging CRITICAL
-    logAL = logging ALERT
-    logEM = logging EMERGENCY
-    
-    llogDE,llogIN,llogNO,llogWA,llogER,llogCR,llogAL,llogEM   :: 
-         (MonadState LogState m, MonadWriter Log m, MonadTrans t) =>
-               Message -> t m ()        
-    llogDE = \m -> lift (logDE m)
-    llogIN = \m -> lift (logIN m)
-    llogNO = \m -> lift (logNO m)
-    llogWA = \m -> lift (logWA m)
-    llogER = \m -> lift (logER m)
-    llogCR = \m -> lift (logCR m)
-    llogAL = \m -> lift (logAL m)
-    llogEM = \m -> lift (logEM m) 
-        
-    llogEnterDE, llogEnterIN :: ( MonadWriter Log m, MonadState LogState m
-                                , MonadTrans t) => t m ()           
-    llogEnterDE = lift logEnterDE
-    llogEnterIN = lift logEnterIN
-    
-    logEnterDE, logEnterIN :: (MonadWriter Log m, MonadState LogState m) => m ()           
-    logEnterDE = logDE [" - - - - - - Function entered - - - - - - "]
-    logEnterIN = logIN [" - - - - - - Function entered - - - - - - "]
-     
-    logEntered :: (MonadWriter Log m, MonadState LogState m) => Priority -> m ()           
-    logEntered p = logging p [" - - - - - - Function entered - - - - - - "]
-    
-    llogEntered :: (MonadWriter Log m, MonadState LogState m, MonadTrans t) 
-                    => Priority -> t m ()           
-    llogEntered p = lift $ logEntered p
-    
-    getPriority ::  (MonadState LogState m, MonadWriter Log m) => m Priority
-    getPriority = gets (\(p,_,_) -> p)
+      
+logDE,logIN,logNO,logWA,logER,logCR,logAL,logEM   ::  Message -> LM ()        
+logDE = logging DEBUG
+logIN = logging INFO
+logNO = logging NOTICE
+logWA = logging WARNING
+logER = logging ERROR
+logCR = logging CRITICAL
+logAL = logging ALERT
+logEM = logging EMERGENCY
hunk ./src/Logging/Logger.hs 99
-    setPriority ::  (MonadState LogState m, MonadWriter Log m) =>Priority -> m ()
-    setPriority p = modify (\(_,gll,cl) -> (p,gll,cl))
-    
-    getGlobalLogLevel ::  (MonadState LogState m, MonadWriter Log m) =>m Logger
-    getGlobalLogLevel = gets (\(_,gll,_) -> gll)
-    
-    setGlobalLogLevel ::  (MonadState LogState m, MonadWriter Log m) =>Logger -> m ()
-    setGlobalLogLevel gll = modify (\(p,_,cl) -> (p,gll,cl))
-    
-    getCurrentLogger ::  (MonadState LogState m, MonadWriter Log m) =>m Logger
-    getCurrentLogger = gets (\(_,_,cl) -> cl)
+llogDE,llogIN,llogNO,llogWA,llogER,llogCR,llogAL,llogEM   :: 
+    ( MonadTrans t) =>  Message -> t LM ()        
+llogDE = \m -> lift (logDE m)
+llogIN = \m -> lift (logIN m)
+llogNO = \m -> lift (logNO m)
+llogWA = \m -> lift (logWA m)
+llogER = \m -> lift (logER m)
+llogCR = \m -> lift (logCR m)
+llogAL = \m -> lift (logAL m)
+llogEM = \m -> lift (logEM m) 
hunk ./src/Logging/Logger.hs 110
-    setCurrentLogger ::  (MonadState LogState m, MonadWriter Log m) =>Logger -> m ()
-    setCurrentLogger cl = modify (\(p,gll,_) -> (p,gll,cl))
-    
-    logging :: (ELog m) => Priority -> Message -> m ()
-    logging p msg   = getCurrentLogger >>= \l ->
-                      handle (p,l,msg)
+llogEnterDE, llogEnterIN :: (MonadTrans t) => t LM ()           
+llogEnterDE = lift logEnterDE
+llogEnterIN = lift logEnterIN
+
+logEnterDE, logEnterIN :: LM ()         
+logEnterDE = logDE [" - - - - - - Function entered - - - - - - "]
+logEnterIN = logIN [" - - - - - - Function entered - - - - - - "]
+ 
+logEntered :: Priority -> LM ()           
+logEntered p = logging p [" - - - - - - Function entered - - - - - - "]
+
+llogEntered :: (MonadTrans t) =>  Priority -> t LM ()           
+llogEntered p = lift $ logEntered p
+
+getPriority ::  (MonadState LogState m, MonadWriter Log m) => m Priority
+getPriority = gets (\(p,_,_) -> p)
+
+setPriority ::  (MonadState LogState m, MonadWriter Log m) =>Priority -> m ()
+setPriority p = modify (\(_,gll,cl) -> (p,gll,cl))
+
+getGlobalLogLevel ::  (MonadState LogState m, MonadWriter Log m) =>m Logger
+getGlobalLogLevel = gets (\(_,gll,_) -> gll)
+
+setGlobalLogLevel ::  (MonadState LogState m, MonadWriter Log m) =>Logger -> m ()
+setGlobalLogLevel gll = modify (\(p,_,cl) -> (p,gll,cl))
+
+getCurrentLogger ::  (MonadState LogState m, MonadWriter Log m) =>m Logger
+getCurrentLogger = gets (\(_,_,cl) -> cl)
+
+setCurrentLogger ::  (MonadState LogState m, MonadWriter Log m) =>Logger -> m ()
+setCurrentLogger cl = modify (\(p,gll,_) -> (p,gll,cl))
+
+logging :: Priority -> Message -> LM ()
+logging p msg   = getCurrentLogger >>= \l ->
+                  handle (p,l,msg)
+              
+noLog :: LM a -> a 
+noLog = fst.runEL            
hunk ./src/Logging/Logger.hs 150
-instance (Monad m) => ELog (ELT m)     
+--instance (Monad m) => ELog (ELT m)     
hunk ./src/Logging/Logger.hs 154
-type EL = ELT Identity
+type LM = ELT Identity
hunk ./src/Logging/Logger.hs 157
-noLog :: (Monad m) => ELT m a -> m a
-noLog =  \m -> liftM fst $ runELT m
+--noLog :: (Elog m) => m a -> a
+--noLog =  
hunk ./src/Logging/Logger.hs 161
-handle :: (ELog m) =>  LogEntry -> m ()
+handle :: LogEntry -> LM ()
hunk ./src/Terms/Antiunifier.hs 20
-import Terms.Class
-
-
hunk ./src/Terms/Antiunifier.hs 21
+import Terms.Class
hunk ./src/Terms/Antiunifier.hs 40
-type AU m k v t = StateT (VarMap k v) m t
+type AU k v t = StateT (VarMap k v) LM t
hunk ./src/Terms/Antiunifier.hs 43
-evalAU :: (ELog m) => StateT s m a -> s -> m a
+evalAU :: StateT s LM a -> s -> LM a
hunk ./src/Terms/Antiunifier.hs 48
-runAU :: (ELog m) => StateT s m a -> s -> m (a, s)
+runAU :: StateT s LM a -> s -> LM (a, s)
hunk ./src/Terms/Antiunifier.hs 100
-    antiunify        :: (ELog m) => [t] -> m t
+    antiunify        :: [t] -> LM t
hunk ./src/Terms/Antiunifier.hs 104
-    antiunifyWithMap ::  (Antiunifieable k v t, ELog m) => (VarMap k v) -> [t] -> m t
+    antiunifyWithMap ::  (Antiunifieable k v t) => (VarMap k v) -> [t] -> LM t
hunk ./src/Terms/Antiunifier.hs 122
-    aunify           :: (Antiunifieable k v t, ELog m) => [t] -> AU m k v t
+    aunify           :: (Antiunifieable k v t) => [t] -> AU k v t
hunk ./src/Terms/Antiunifier.hs 195
+  
+  
+
hunk ./src/Terms/Antiunifier.hs 224
+                
+instance Antiunifieable Exp Exp ([Pat],Exp) where 
+    toKey = 
+        fail $ "Antiunifier.aunify: Cannot generalise over an arbitrary " ++
+                "number of patterns in Rule!"
+    fromVal = 
+        fail $ "Antiunifier.aunify: Cannot generalise over an arbitrary " ++
+                "number of patterns in Rule!"
+    mkVar = 
+        fail $ "Antiunifier.aunify: Cannot generalise over an arbitrary " ++
+                "number of patterns in Rule!"
+       
+    aunify rules  = do
+        let tlhss   = transpose $ map fst rules
+        let rhss    = map snd rules
+        (ailhs,varmap) <- lift $ runAU ((mapM aunify) tlhss) M.empty
+        airhs         <- lift $ antiunifyWithMap varmap rhss
+        return $ (ailhs,airhs)                
hunk ./src/Terms/Antiunifier.hs 563
-checkforAntiInstance :: (Ord k, Eq t, Antiunifieable k v t, ELog m) => [t] -> AU m k v t
+checkforAntiInstance :: (Ord k, Eq t, Antiunifieable k v t) => [t] -> AU k v t
hunk ./src/Terms/Antiunifier.hs 576
-computeAntiInstance :: (Ord k, Antiunifieable k v t, ELog m) => [t] -> AU m k v t
+computeAntiInstance :: (Ord k, Antiunifieable k v t) => [t] -> AU k v t
hunk ./src/Terms/Unifier.hs 11
+import Control.Monad
+import Control.Monad.Trans
hunk ./src/Terms/Unifier.hs 43
-type U m a = StateT (Substitution a) m ()
+type U a = StateT (Substitution a) LM ()
hunk ./src/Terms/Unifier.hs 48
-    mgu :: ( ELog m) => t -> t -> m (Substitution t)
+    mgu ::  t -> t -> LM (Substitution t)
hunk ./src/Terms/Unifier.hs 56
-    applyMgu :: ( ELog m) => (Substitution t) -> t -> m t
+    applyMgu :: (Substitution t) -> t -> LM t
hunk ./src/Terms/Unifier.hs 58
-    matchesWithSubs :: ( ELog m) =>  t -> t -> m (Substitution t)  
+    matchesWithSubs ::  t -> t -> LM (Substitution t)  
hunk ./src/Terms/Unifier.hs 64
-    matches :: ( ELog m) =>  t -> t -> m Bool
+    matches ::  t -> t -> LM Bool
hunk ./src/Terms/Unifier.hs 67
-    subsumes :: ( ELog m) =>  t -> t -> m Bool
+    subsumes ::  t -> t -> LM Bool
hunk ./src/Terms/Unifier.hs 70
-    match :: ( ELog m) =>  t -> t -> U m t
+    match ::  t -> t -> U t
hunk ./src/Terms/Unifier.hs 72
-    matchVar :: ( ELog m) => t -> t -> U m t
+    matchVar :: t -> t -> U t
hunk ./src/Terms/Unifier.hs 84
-    unify :: ( ELog m) =>  t -> t -> U m t
+    unify ::  t -> t -> U t
hunk ./src/Terms/Unifier.hs 86
-    unifyVar :: ( ELog m) => t -> t -> U m t
+    unifyVar :: t -> t -> U t
hunk ./src/Terms/Unifier.hs 234
-liftUnify :: ( ELog m) => Maybe Exp -> Maybe Exp -> U m Exp
+liftUnify :: Maybe Exp -> Maybe Exp -> U Exp
hunk ./src/Terms/Unifier.hs 238
-liftMatch :: ( ELog m) => Maybe Exp -> Maybe Exp -> U m Exp
+liftMatch :: Maybe Exp -> Maybe Exp -> U Exp
hunk ./src/Test.hs 7
-import Control.Monad.Trans (liftIO)
+import Control.Monad
+import Control.Monad.Trans 
hunk ./src/Test.hs 222
-testunify :: (Term t, ELog m,Antiunifieable k v t,Unifieable t) => t -> t -> m t
+testunify :: (Term t, Antiunifieable k v t,Unifieable t) => t -> t -> LM t
hunk ./src/Test.hs 232
-testantiunify :: (Term t, ELog m,Antiunifieable k v t,Unifieable t) => t -> t -> m t
+testantiunify :: (Term t, Antiunifieable k v t,Unifieable t) => t -> t -> LM t
hunk ./src/Test.hs 239
-testcase1 :: (Term t, ELog m,Antiunifieable k v t,Unifieable t) => t -> t -> m t
+testcase1 :: (Term t, Antiunifieable k v t,Unifieable t) => t -> t -> LM t
hunk ./src/Test.hs 265
-testcase2 :: (Term t, ELog m,Antiunifieable k v t,Unifieable t) => t -> t -> m t
+testcase2 :: (Term t, Antiunifieable k v t,Unifieable t) => t -> t -> LM t
hunk ./src/Test.hs 283
-testcase3 :: (Term t, ELog m,Antiunifieable k v t,Unifieable t) => t -> t -> m t
+testcase3 :: (Term t, Antiunifieable k v t,Unifieable t) => t -> t -> LM t
hunk ./src/Test.hs 298
-testinit :: (ELog m) => Dec -> Dec -> m Dec
+testinit :: Dec -> Dec -> LM Dec
hunk ./src/Test.hs 311
-dotest  :: (Ppr t) => (t -> t -> EL t) -> (Q t) -> (Q t) -> IO ()
+dotest  :: (Ppr t) => (t -> t -> LM t) -> (Q t) -> (Q t) -> IO ()