From 3f749b43aa90adb94d3faeb5c3b0f7cc38523817 Mon Sep 17 00:00:00 2001 From: David Waern Date: Sun, 11 Nov 2007 02:21:19 +0000 Subject: Manual merge of a patch from Duncan Coutts that removes the dependency on mtl --- haddock.cabal | 1 - src/Haddock/Interface.hs | 1 - src/Haddock/Interface/Create.hs | 2 +- src/Haddock/Interface/Rename.hs | 1 - src/Haddock/Types.hs | 16 +++++++++++++--- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/haddock.cabal b/haddock.cabal index 92f8057f..b3b91e91 100644 --- a/haddock.cabal +++ b/haddock.cabal @@ -13,7 +13,6 @@ synopsis: Haddock is a documentation-generation tool for Haskell build-depends: base, haskell98, - mtl, ghc>=6.8, Cabal, filepath, diff --git a/src/Haddock/Interface.hs b/src/Haddock/Interface.hs index 4b178bf4..5f40422e 100644 --- a/src/Haddock/Interface.hs +++ b/src/Haddock/Interface.hs @@ -24,7 +24,6 @@ import Haddock.GHC.Utils import qualified Data.Map as Map import Data.Map (Map) import Data.List -import Control.Monad.Writer import Control.Monad import Name diff --git a/src/Haddock/Interface/Create.hs b/src/Haddock/Interface/Create.hs index 800f099e..24db83b9 100644 --- a/src/Haddock/Interface/Create.hs +++ b/src/Haddock/Interface/Create.hs @@ -19,7 +19,7 @@ import Data.List import Data.Maybe import Data.Char import Data.Ord -import Control.Monad.Writer +import Control.Monad import GHC import Outputable diff --git a/src/Haddock/Interface/Rename.hs b/src/Haddock/Interface/Rename.hs index 2c231960..81717716 100644 --- a/src/Haddock/Interface/Rename.hs +++ b/src/Haddock/Interface/Rename.hs @@ -26,7 +26,6 @@ import Prelude hiding (mapM) import Data.Traversable (mapM) import Control.Arrow import Control.Monad hiding (mapM) -import Control.Monad.Writer hiding (mapM) renameInterface :: LinkEnv -> Interface -> ErrMsgM Interface diff --git a/src/Haddock/Types.hs b/src/Haddock/Types.hs index 6143ae02..f1e01459 100644 --- a/src/Haddock/Types.hs +++ b/src/Haddock/Types.hs @@ -10,7 +10,6 @@ module Haddock.Types where import Data.Map (Map) import qualified Data.Map as Map -import Control.Monad.Writer import GHC hiding (NoLink) import Outputable @@ -203,7 +202,18 @@ data DocMarkup id a = Markup { } --- A monad which collects error messages +-- A monad which collects error messages, locally defined to avoid a dep on mtl type ErrMsg = String -type ErrMsgM a = Writer [ErrMsg] a + +newtype ErrMsgM a = Writer { runWriter :: (a, [ErrMsg]) } + +instance Monad ErrMsgM where + return a = Writer (a, []) + m >>= k = Writer $ let + (a, w) = runWriter m + (b, w') = runWriter (k a) + in (b, w ++ w') + +tell :: [ErrMsg] -> ErrMsgM () +tell w = Writer ((), w) -- cgit v1.2.3