[Replaced type ELT with newtype ELT; files depending on Logger.hs are still broken.
tobias@goedderz.info**20140716144805
 Ignore-this: 9a0a0c29c5d0558ab4848c597160c9a4
] hunk ./src/Igor2/Logging/Logger.hs 2
+{-# OPTIONS_GHC -XMultiParamTypeClasses #-}
+{-# OPTIONS_GHC -XFlexibleInstances #-}
conflictor [
hunk ./src/Igor2/Logging/Logger.hs 6
-    tp,ts,lift4, lputStrLn,lputDoc,
-    
+    tp,ts,
+
]
:
hunk ./src/Igor2/Logging/Logger.hs 6
-    tp,ts,lift4, lputStrLn,lputDoc,
+    tp, ts, lputStrLn, lputDoc,
hunk ./src/Igor2/Logging/Logger.hs 34
-import Control.Monad.State(MonadState, StateT, evalStateT, gets, modify)
+import Control.Monad.State(MonadState(put, get, state), StateT, evalStateT, gets, modify)
conflictor [
hunk ./src/Igor2/Logging/Logger.hs 49
-ts s = \x -> (trace $ s ++ (show $ x)) x
-
-lift4 = lift . lift . lift . lift
-lputStrLn = lift4 . putStrLn
-lputDoc = lift4 . putDoc
+ts s = \x -> (trace $ s ++ show x) x
]
:
hunk ./src/Igor2/Logging/Logger.hs 51
-lift4 = lift . lift . lift . lift
-lputStrLn = lift4 . putStrLn
-lputDoc = lift4 . putDoc
+lputStrLn :: String -> ELT (C IO) ()
+lputStrLn = liftIO . putStrLn
+
+lputDoc :: Doc -> ELT (C IO) ()
+lputDoc = liftIO . putDoc
hunk ./src/Igor2/Logging/Logger.hs 166
-type ELT m = (StateT LogState (ErrorT String (WriterT Log m)))
+newtype ELT m a = ELT { unELT :: (StateT LogState (ErrorT String (WriterT Log m)) a) }
+
+instance Monad m => Monad (ELT m) where
+    return = ELT . return
+    (ELT m) >>= f = ELT (m >>= unELT . f)
+
+instance MonadTrans ELT where
+    lift = ELT . lift . lift . lift
+
+instance MonadIO m => MonadIO (ELT m) where
+    liftIO = ELT . liftIO
+
+instance Monad m => MonadWriter Log (ELT m) where
+    tell = ELT . tell
+    listen = ELT . listen . unELT
+    pass = ELT . pass . unELT
+
+instance MonadState LogState (ELT (C IO)) where
+    get = ELT get
+    put = ELT . put
+
hunk ./src/Igor2/Logging/Logger.hs 188
-runELT m s = runWriterT (runErrorT (evalStateT m s))
+runELT m s = runWriterT (runErrorT (evalStateT (unELT m) s))