genprimopcode: Applicative instance for ParserM
authorAustin Seipp <austin@well-typed.com>
Mon, 13 Jan 2014 23:57:47 +0000 (17:57 -0600)
committerAustin Seipp <austin@well-typed.com>
Tue, 14 Jan 2014 09:46:07 +0000 (03:46 -0600)
Signed-off-by: Austin Seipp <austin@well-typed.com>
utils/genprimopcode/ParserM.hs

index aaaf6ac..0a69db6 100644 (file)
@@ -16,13 +16,21 @@ module ParserM (
     -- Other
     happyError
  ) where
-
+import Control.Applicative
+import Control.Monad (ap, liftM)
 import Data.Word (Word8)
 import Data.Char (ord)
 
 -- Parser Monad
 newtype ParserM a = ParserM (AlexInput -> St -> Either String (AlexInput, St, a))
 
+instance Functor ParserM where
+  fmap = liftM
+
+instance Applicative ParserM where
+  pure  = return
+  (<*>) = ap
+
 instance Monad ParserM where
     ParserM m >>= k = ParserM $ \i s -> case m i s of
                                             Right (i', s', x) ->