Safe Haskell | Safe |
---|---|

Language | Haskell98 |

## Synopsis

- type Parser s r = [s] -> [(r, [s])]
- anySymbol :: Parser s s
- satisfy :: (s -> Bool) -> Parser s s
- empty :: Parser s a
- failp :: Parser s a
- succeed :: a -> Parser s a
- pure :: a -> Parser s a
- (<|>) :: Parser s a -> Parser s a -> Parser s a
- (<<|>) :: Foldable t1 => (t2 -> t1 a) -> (t2 -> t1 a) -> t2 -> t1 a
- (<*>) :: Parser s (b -> a) -> Parser s b -> Parser s a
- (<$>) :: (a -> b) -> Parser s a -> Parser s b
- (>>=) :: Parser s a -> (a -> Parser s b) -> Parser s b
- look :: Parser s [s]
- parse :: Parser s a -> [s] -> [(a, [s])]

# The type of parsers

type Parser s r = [s] -> [(r, [s])] Source #

An input string is mapped to a list of successful parses.
For each succesful parse, we return the result of type `r`

,
and the remaining input string. The input must be a list of
symbols.

# Elementary parsers

satisfy :: (s -> Bool) -> Parser s s Source #

Takes a predicate and returns a parser that parses a single symbol satisfying that predicate.

pure :: a -> Parser s a Source #

Same as `succeed`

; provided for compatiblity with the applicative
interface.

# Parser combinators

(<|>) :: Parser s a -> Parser s a -> Parser s a infixr 3 Source #

Choice between two parsers with the same result type.

(<<|>) :: Foldable t1 => (t2 -> t1 a) -> (t2 -> t1 a) -> t2 -> t1 a infixr 3 Source #

Biased choice. If the left hand side parser succeeds, the right hand side is not considered. Use with care!

(>>=) :: Parser s a -> (a -> Parser s b) -> Parser s b infixl 1 Source #

Monadic bind. Do not use this combinator unless absolutely
required. Most sequencing can be done with `<*>`

.