-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A simple applicative parser in Parsec style
@package appar
@version 0.1.8


-- | Simple <a>Applicative</a> parser whose input is lazy
--   <a>ByteString</a>. The usage is the same as parsec.
--   
--   Parsec 3 provides features which Parsec 2 does not provide:
--   
--   <ul>
--   <li><a>Applicative</a> style</li>
--   <li><a>ByteString</a> as input</li>
--   </ul>
--   
--   But Haskell Platform includes Parsec 2, not Parsec 3. Installing
--   Parsec 3 to Haskell Platform environment makes it mess. So, this
--   library was implemented.
module Text.Appar.LazyByteString

-- | Parser synonym for strict <a>ByteString</a>.
type Parser = MkParser ByteString

-- | Parses a letter or digit (a character between '0' and '9'). Returns
--   the parsed character.
alphaNum :: Input inp => MkParser inp Char

-- | This parser succeeds for any character. Returns the parsed character.
anyChar :: Input inp => MkParser inp Char

-- | <tt>char c</tt> parses a single character <tt>c</tt>. Returns the
--   parsed character.
char :: Input inp => Char -> MkParser inp Char

-- | <tt>choice ps</tt> tries to apply the parsers in the list <tt>ps</tt>
--   in order, until one of them succeeds. Returns the value of the
--   succeeding parser.
choice :: [MkParser inp a] -> MkParser inp a

-- | Parses a digit. Returns the parsed character.
digit :: Input inp => MkParser inp Char

-- | Parses a hexadecimal digit (a digit or a letter between 'a' and 'f' or
--   'A' and 'F'). Returns the parsed character.
hexDigit :: Input inp => MkParser inp Char

-- | <tt>manyTill p end</tt> applies parser <tt>p</tt> <i>zero</i> or more
--   times until parser <tt>end</tt> succeeds. Returns the list of values
--   returned by <tt>p</tt>.
manyTill :: MkParser inp a -> MkParser inp b -> MkParser inp [a]

-- | As the dual of <a>oneOf</a>, <tt>noneOf cs</tt> succeeds if the
--   current character <i>not</i> in the supplied list of characters
--   <tt>cs</tt>. Returns the parsed character.
noneOf :: Input inp => String -> MkParser inp Char

-- | <tt>oneOf cs</tt> succeeds if the current character is in the supplied
--   list of characters <tt>cs</tt>. Returns the parsed character.
oneOf :: Input inp => String -> MkParser inp Char

-- | <tt>option x p</tt> tries to apply parser <tt>p</tt>. If <tt>p</tt>
--   fails without consuming input, it returns the value <tt>x</tt>,
--   otherwise the value returned by <tt>p</tt>.
option :: a -> MkParser inp a -> MkParser inp a

-- | Run a parser.
parse :: Input inp => MkParser inp a -> inp -> Maybe a

-- | The parser <tt>satisfy f</tt> succeeds for any character for which the
--   supplied function <tt>f</tt> returns <a>True</a>. Returns the
--   character that is actually parsed.
satisfy :: Input inp => (Char -> Bool) -> MkParser inp Char

-- | <tt>sepBy1 p sep</tt> parses <i>one</i> or more occurrences of
--   <tt>p</tt>, separated by <tt>sep</tt>. Returns a list of values
--   returned by <tt>p</tt>.
sepBy1 :: MkParser inp a -> MkParser inp b -> MkParser inp [a]

-- | <tt>skipMany p</tt> applies the parser <tt>p</tt> <i>zero</i> or more
--   times, skipping its result.
skipMany :: MkParser inp a -> MkParser inp ()

-- | <tt>skipSome p</tt> applies the parser <tt>p</tt> <i>one</i> or more
--   times, skipping its result.
skipSome :: MkParser inp a -> MkParser inp ()

-- | Parses a white space character (any character which satisfies
--   <a>isSpace</a>) Returns the parsed character.
space :: Input inp => MkParser inp Char

-- | <tt>string s</tt> parses a sequence of characters given by <tt>s</tt>.
--   Returns the parsed string
string :: Input inp => String -> MkParser inp String

-- | The parser try p behaves like parser p, except that it pretends that
--   it hasn't consumed any input when an error occurs.
try :: MkParser inp a -> MkParser inp a
(<**>) :: Applicative f => f a -> f (a -> b) -> f b
(<$>) :: Functor f => (a -> b) -> f a -> f b

-- | The class for parser input.
class Eq inp => Input inp

-- | The head function for input
car :: Input inp => inp -> Char

-- | The tail function for input
cdr :: Input inp => inp -> inp

-- | The end of input
nil :: Input inp => inp

-- | The function to check the end of input
isNil :: Input inp => inp -> Bool
data MkParser inp a
P :: (inp -> (Maybe a, inp)) -> MkParser inp a

-- | Getting the internal parser.
[runParser] :: MkParser inp a -> inp -> (Maybe a, inp)
(<|>) :: Alternative f => f a -> f a -> f a
many :: Alternative f => f a -> f [a]
some :: Alternative f => f a -> f [a]
(*>) :: Applicative f => f a -> f b -> f b
(<*) :: Applicative f => f a -> f b -> f a
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
pure :: Applicative f => a -> f a
(<$) :: Functor f => a -> f b -> f a


-- | Simple <a>Applicative</a> parser whose input is strict
--   <a>ByteString</a>. The usage is the same as parsec.
--   
--   Parsec 3 provides features which Parsec 2 does not provide:
--   
--   <ul>
--   <li><a>Applicative</a> style</li>
--   <li><a>ByteString</a> as input</li>
--   </ul>
--   
--   But Haskell Platform includes Parsec 2, not Parsec 3. Installing
--   Parsec 3 to Haskell Platform environment makes it mess. So, this
--   library was implemented.
module Text.Appar.ByteString

-- | Parser synonym for strict <a>ByteString</a>.
type Parser = MkParser ByteString

-- | Parses a letter or digit (a character between '0' and '9'). Returns
--   the parsed character.
alphaNum :: Input inp => MkParser inp Char

-- | This parser succeeds for any character. Returns the parsed character.
anyChar :: Input inp => MkParser inp Char

-- | <tt>char c</tt> parses a single character <tt>c</tt>. Returns the
--   parsed character.
char :: Input inp => Char -> MkParser inp Char

-- | <tt>choice ps</tt> tries to apply the parsers in the list <tt>ps</tt>
--   in order, until one of them succeeds. Returns the value of the
--   succeeding parser.
choice :: [MkParser inp a] -> MkParser inp a

-- | Parses a digit. Returns the parsed character.
digit :: Input inp => MkParser inp Char

-- | Parses a hexadecimal digit (a digit or a letter between 'a' and 'f' or
--   'A' and 'F'). Returns the parsed character.
hexDigit :: Input inp => MkParser inp Char

-- | <tt>manyTill p end</tt> applies parser <tt>p</tt> <i>zero</i> or more
--   times until parser <tt>end</tt> succeeds. Returns the list of values
--   returned by <tt>p</tt>.
manyTill :: MkParser inp a -> MkParser inp b -> MkParser inp [a]

-- | As the dual of <a>oneOf</a>, <tt>noneOf cs</tt> succeeds if the
--   current character <i>not</i> in the supplied list of characters
--   <tt>cs</tt>. Returns the parsed character.
noneOf :: Input inp => String -> MkParser inp Char

-- | <tt>oneOf cs</tt> succeeds if the current character is in the supplied
--   list of characters <tt>cs</tt>. Returns the parsed character.
oneOf :: Input inp => String -> MkParser inp Char

-- | <tt>option x p</tt> tries to apply parser <tt>p</tt>. If <tt>p</tt>
--   fails without consuming input, it returns the value <tt>x</tt>,
--   otherwise the value returned by <tt>p</tt>.
option :: a -> MkParser inp a -> MkParser inp a

-- | Run a parser.
parse :: Input inp => MkParser inp a -> inp -> Maybe a

-- | The parser <tt>satisfy f</tt> succeeds for any character for which the
--   supplied function <tt>f</tt> returns <a>True</a>. Returns the
--   character that is actually parsed.
satisfy :: Input inp => (Char -> Bool) -> MkParser inp Char

-- | <tt>sepBy1 p sep</tt> parses <i>one</i> or more occurrences of
--   <tt>p</tt>, separated by <tt>sep</tt>. Returns a list of values
--   returned by <tt>p</tt>.
sepBy1 :: MkParser inp a -> MkParser inp b -> MkParser inp [a]

-- | <tt>skipMany p</tt> applies the parser <tt>p</tt> <i>zero</i> or more
--   times, skipping its result.
skipMany :: MkParser inp a -> MkParser inp ()

-- | <tt>skipSome p</tt> applies the parser <tt>p</tt> <i>one</i> or more
--   times, skipping its result.
skipSome :: MkParser inp a -> MkParser inp ()

-- | Parses a white space character (any character which satisfies
--   <a>isSpace</a>) Returns the parsed character.
space :: Input inp => MkParser inp Char

-- | <tt>string s</tt> parses a sequence of characters given by <tt>s</tt>.
--   Returns the parsed string
string :: Input inp => String -> MkParser inp String

-- | The parser try p behaves like parser p, except that it pretends that
--   it hasn't consumed any input when an error occurs.
try :: MkParser inp a -> MkParser inp a
(<**>) :: Applicative f => f a -> f (a -> b) -> f b
(<$>) :: Functor f => (a -> b) -> f a -> f b

-- | The class for parser input.
class Eq inp => Input inp

-- | The head function for input
car :: Input inp => inp -> Char

-- | The tail function for input
cdr :: Input inp => inp -> inp

-- | The end of input
nil :: Input inp => inp

-- | The function to check the end of input
isNil :: Input inp => inp -> Bool
data MkParser inp a
P :: (inp -> (Maybe a, inp)) -> MkParser inp a

-- | Getting the internal parser.
[runParser] :: MkParser inp a -> inp -> (Maybe a, inp)
(<|>) :: Alternative f => f a -> f a -> f a
many :: Alternative f => f a -> f [a]
some :: Alternative f => f a -> f [a]
(*>) :: Applicative f => f a -> f b -> f b
(<*) :: Applicative f => f a -> f b -> f a
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
pure :: Applicative f => a -> f a
(<$) :: Functor f => a -> f b -> f a


-- | Simple <a>Applicative</a> parser whose input is <a>String</a>. The
--   usage is the same as parsec.
--   
--   Parsec 3 provides features which Parsec 2 does not provide:
--   
--   <ul>
--   <li><a>Applicative</a> style</li>
--   <li><tt>ByteString</tt> as input</li>
--   </ul>
--   
--   But Haskell Platform includes Parsec 2, not Parsec 3. Installing
--   Parsec 3 to Haskell Platform environment makes it mess. So, this
--   library was implemented.
module Text.Appar.String

-- | Parser synonym for <a>String</a>.
type Parser = MkParser String

-- | Parses a letter or digit (a character between '0' and '9'). Returns
--   the parsed character.
alphaNum :: Input inp => MkParser inp Char

-- | This parser succeeds for any character. Returns the parsed character.
anyChar :: Input inp => MkParser inp Char

-- | <tt>char c</tt> parses a single character <tt>c</tt>. Returns the
--   parsed character.
char :: Input inp => Char -> MkParser inp Char

-- | <tt>choice ps</tt> tries to apply the parsers in the list <tt>ps</tt>
--   in order, until one of them succeeds. Returns the value of the
--   succeeding parser.
choice :: [MkParser inp a] -> MkParser inp a

-- | Parses a digit. Returns the parsed character.
digit :: Input inp => MkParser inp Char

-- | Parses a hexadecimal digit (a digit or a letter between 'a' and 'f' or
--   'A' and 'F'). Returns the parsed character.
hexDigit :: Input inp => MkParser inp Char

-- | <tt>manyTill p end</tt> applies parser <tt>p</tt> <i>zero</i> or more
--   times until parser <tt>end</tt> succeeds. Returns the list of values
--   returned by <tt>p</tt>.
manyTill :: MkParser inp a -> MkParser inp b -> MkParser inp [a]

-- | As the dual of <a>oneOf</a>, <tt>noneOf cs</tt> succeeds if the
--   current character <i>not</i> in the supplied list of characters
--   <tt>cs</tt>. Returns the parsed character.
noneOf :: Input inp => String -> MkParser inp Char

-- | <tt>oneOf cs</tt> succeeds if the current character is in the supplied
--   list of characters <tt>cs</tt>. Returns the parsed character.
oneOf :: Input inp => String -> MkParser inp Char

-- | <tt>option x p</tt> tries to apply parser <tt>p</tt>. If <tt>p</tt>
--   fails without consuming input, it returns the value <tt>x</tt>,
--   otherwise the value returned by <tt>p</tt>.
option :: a -> MkParser inp a -> MkParser inp a

-- | Run a parser.
parse :: Input inp => MkParser inp a -> inp -> Maybe a

-- | The parser <tt>satisfy f</tt> succeeds for any character for which the
--   supplied function <tt>f</tt> returns <a>True</a>. Returns the
--   character that is actually parsed.
satisfy :: Input inp => (Char -> Bool) -> MkParser inp Char

-- | <tt>sepBy1 p sep</tt> parses <i>one</i> or more occurrences of
--   <tt>p</tt>, separated by <tt>sep</tt>. Returns a list of values
--   returned by <tt>p</tt>.
sepBy1 :: MkParser inp a -> MkParser inp b -> MkParser inp [a]

-- | <tt>skipMany p</tt> applies the parser <tt>p</tt> <i>zero</i> or more
--   times, skipping its result.
skipMany :: MkParser inp a -> MkParser inp ()

-- | <tt>skipSome p</tt> applies the parser <tt>p</tt> <i>one</i> or more
--   times, skipping its result.
skipSome :: MkParser inp a -> MkParser inp ()

-- | Parses a white space character (any character which satisfies
--   <a>isSpace</a>) Returns the parsed character.
space :: Input inp => MkParser inp Char

-- | <tt>string s</tt> parses a sequence of characters given by <tt>s</tt>.
--   Returns the parsed string
string :: Input inp => String -> MkParser inp String

-- | The parser try p behaves like parser p, except that it pretends that
--   it hasn't consumed any input when an error occurs.
try :: MkParser inp a -> MkParser inp a
(<**>) :: Applicative f => f a -> f (a -> b) -> f b
(<$>) :: Functor f => (a -> b) -> f a -> f b

-- | The class for parser input.
class Eq inp => Input inp

-- | The head function for input
car :: Input inp => inp -> Char

-- | The tail function for input
cdr :: Input inp => inp -> inp

-- | The end of input
nil :: Input inp => inp

-- | The function to check the end of input
isNil :: Input inp => inp -> Bool
data MkParser inp a
P :: (inp -> (Maybe a, inp)) -> MkParser inp a

-- | Getting the internal parser.
[runParser] :: MkParser inp a -> inp -> (Maybe a, inp)
(<|>) :: Alternative f => f a -> f a -> f a
many :: Alternative f => f a -> f [a]
some :: Alternative f => f a -> f [a]
(*>) :: Applicative f => f a -> f b -> f b
(<*) :: Applicative f => f a -> f b -> f a
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
pure :: Applicative f => a -> f a
(<$) :: Functor f => a -> f b -> f a
