+{-# LANGUAGE
+ BangPatterns
+ , ScopedTypeVariables
+ , UnboxedTuples
+ , UnicodeSyntax
+ #-}
-- |Yet another parser combinator. This is mostly a subset of
-- "Text.ParserCombinators.Parsec" but there are some differences:
--
)
where
-import Control.Monad.State.Strict
+import Control.Monad.State.Strict hiding (state)
import qualified Data.ByteString.Lazy as Lazy (ByteString)
import qualified Data.ByteString.Lazy.Char8 as B hiding (ByteString)
import qualified Data.Foldable as Fold
return !x = Parser $! return $! Success x
fail _ = Parser $! return $! IllegalInput
+instance Functor Parser where
+ fmap f p = p >>= return . f
+
-- |@'failP'@ is just a synonym for @'Prelude.fail'
-- 'Prelude.undefined'@.
failP :: Parser a