Add instance Functor Q and make Quasi require Functor
authorIan Lynagh <igloo@earth.li>
Thu, 22 Mar 2007 17:01:42 +0000 (17:01 +0000)
committerIan Lynagh <igloo@earth.li>
Thu, 22 Mar 2007 17:01:42 +0000 (17:01 +0000)
Language/Haskell/TH/Syntax.hs

index a14d85b..d376a37 100644 (file)
@@ -57,7 +57,7 @@ import System.IO      ( hPutStrLn, stderr )
 --
 -----------------------------------------------------
 
-class Monad m => Quasi m where
+class (Monad m, Functor m) => Quasi m where
        -- Fresh names
   qNewName :: String -> m Name
 
@@ -127,6 +127,9 @@ instance Monad Q where
   Q m >> Q n = Q (m >> n)
   fail s     = Q (fail s)
 
+instance Functor Q where
+  fmap f (Q x) = Q (fmap f x)
+
 ----------------------------------------------------
 -- Packaged versions for the programmer, hiding the Quasi-ness
 newName :: String -> Q Name