Stability | experimental |
---|---|
Maintainer | Roman Cheplyaka <roma@ro-che.info> |
Documentation
Type of regular expressions that recognize symbols of type s
and
produce a result of type a
.
Regular expressions can be built using Functor
, Applicative
and
Alternative
instances in the following natural way:
-
f
<$>
ra
matches iffra
matches, and its return value is the result of applyingf
to the return value ofra
. -
pure
x
matches the empty string (i.e. it does not consume any symbols), and its return value isx
-
rf
<*>
ra
matches a string iff it is a concatenation of two strings: one matched byrf
and the other matched byra
. The return value isf a
, wheref
anda
are the return values ofrf
andra
respectively. -
ra
<|>
rb
matches a string which is accepted by eitherra
orrb
. It is left-biased, so if both can match, the result ofra
is used. -
empty
is a regular expression which does not match any string. -
many
ra
matches concatenation of zero or more strings matched byra
and returns the list ofra
's return values on those strings.
Functor (RE s) | |
Applicative (RE s) | |
Alternative (RE s) |
psym :: (s -> Bool) -> RE s sSource
Matches and returns a single symbol which satisfies the predicate
reFoldl :: (b -> a -> b) -> b -> RE s a -> RE s bSource
Greedily matches zero or more symbols, which are combined using the given folding function
(=~) :: [s] -> RE s a -> Maybe aSource
Attempts to match a string of symbols against the regular expression
module Control.Applicative