Stability  experimental 

Maintainer  Roman Cheplyaka <roma@roche.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 leftbiased, 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