\begin{code} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE CPP #-} #if __GLASGOW_HASKELL__ >= 800 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-} #endif module Text.RE.Types.IsRegex where import Text.RE.Types.Match import Text.RE.Types.Matches import Text.RE.Types.Options import Text.RE.Types.Replace \end{code} \begin{code} class Replace s => IsRegex re s where matchOnce :: re -> s -> Match s matchMany :: re -> s -> Matches s makeRegex :: (Functor m,Monad m) => s -> m re makeRegexWith :: (Functor m,Monad m) => SimpleRegexOptions -> s -> m re regexSource :: re -> s \end{code}