Fix AMP warnings in HSCParser.hs
authorAustin Seipp <austin@well-typed.com>
Wed, 18 Sep 2013 17:12:07 +0000 (12:12 -0500)
committerAustin Seipp <austin@well-typed.com>
Wed, 18 Sep 2013 17:12:07 +0000 (12:12 -0500)
Signed-off-by: Austin Seipp <austin@well-typed.com>
HSCParser.hs

index 21c1c8a..745037f 100644 (file)
@@ -1,6 +1,6 @@
 module HSCParser where
-
-import Control.Monad            ( MonadPlus(..), liftM, liftM2 )
+import Control.Applicative      hiding ( many )
+import Control.Monad            ( MonadPlus(..), liftM, liftM2, ap )
 import Data.Char                ( isAlpha, isAlphaNum, isSpace, isDigit )
 
 ------------------------------------------------------------------------
@@ -21,6 +21,13 @@ updatePos pos@(SourcePos name line) ch = case ch of
     '\n' -> SourcePos name (line + 1)
     _    -> pos
 
+instance Functor Parser where
+    fmap = liftM
+
+instance Applicative Parser where
+    pure  = return
+    (<*>) = ap
+
 instance Monad Parser where
     return a = Parser $ \pos s -> Success pos [] s a
     Parser m >>= k =
@@ -33,6 +40,10 @@ instance Monad Parser where
             Failure pos' msg -> Failure pos' msg
     fail msg = Parser $ \pos _ -> Failure pos msg
 
+instance Alternative Parser where
+    empty = mzero
+    (<|>) = mplus
+
 instance MonadPlus Parser where
     mzero                     = fail "mzero"
     Parser m `mplus` Parser n =