module Control.Monad.Parser ( module Control.Monad.Parser.Class, ParserT (..), ParseResult (..), ParseError (..), ErrorDesc (..), Parser, StringParser, runParser, runStringParser, ) where import Control.Monad.Identity import Control.Monad.Parser.Class import Control.Monad.Trans.Parser import Data.Stream.StringLines (StringLines) import qualified Data.Stream.StringLines as StringLines type Parser s a = ParserT s Identity a runParser :: Parser s a -> s -> ParseResult a s runParser :: Parser s a -> s -> ParseResult a s runParser Parser s a p = Identity (ParseResult a s) -> ParseResult a s forall a. Identity a -> a runIdentity (Identity (ParseResult a s) -> ParseResult a s) -> (s -> Identity (ParseResult a s)) -> s -> ParseResult a s forall b c a. (b -> c) -> (a -> b) -> a -> c . Parser s a -> s -> Identity (ParseResult a s) forall s (m :: * -> *) a. ParserT s m a -> s -> m (ParseResult a s) runParserT Parser s a p type StringParser a = Parser StringLines a runStringParser :: StringParser a -> String -> ParseResult a StringLines runStringParser :: StringParser a -> String -> ParseResult a StringLines runStringParser StringParser a p String s = Identity (ParseResult a StringLines) -> ParseResult a StringLines forall a. Identity a -> a runIdentity (Identity (ParseResult a StringLines) -> ParseResult a StringLines) -> Identity (ParseResult a StringLines) -> ParseResult a StringLines forall a b. (a -> b) -> a -> b $ StringParser a -> StringLines -> Identity (ParseResult a StringLines) forall s (m :: * -> *) a. ParserT s m a -> s -> m (ParseResult a s) runParserT StringParser a p (StringLines -> Identity (ParseResult a StringLines)) -> StringLines -> Identity (ParseResult a StringLines) forall a b. (a -> b) -> a -> b $ String -> StringLines StringLines.fromString String s