[Haskell-cafe] ANN: TextRegexLazy-0.56, (=~) and (=~~) are here
Chris Kuklewicz
haskell at list.mightyreason.com
Wed Aug 2 14:15:52 EDT 2006
Bulat Ziganshin wrote:
> Hello Chris,
>
> Wednesday, August 2, 2006, 3:16:58 PM, you wrote:
>
>> Announcing: TextRegexLazy version 0.56
>
> your feature list is really strong! it will be great now to make it
> a part of GHC standard distribution
>
> afaiu, selection of regex engine implemented via import statements?
>
You can actually choose which backend (=~) uses at runtime:
> {-# OPTIONS_GHC -fglasgow-exts #-}
> import Text.Regex.Lazy
>
> import qualified Text.Regex.PCRE as R
> import qualified Text.Regex.PosixRE as S
> import qualified Text.Regex.Full as F
>
> -- Choose which library to use depending on presence of PCRE library
>
> (=~) :: (RegexMaker R.Regex R.CompOption R.ExecOption a,RegexContext R.Regex b t
> ,RegexMaker F.Regex F.CompOption F.ExecOption a,RegexContext F.Regex b t
> ,RegexMaker S.Regex S.CompOption S.ExecOption a,RegexContext S.Regex b t)
> => b -> a -> t
> (=~) = case R.getVersion of
> Just _ -> (R.=~)
> Nothing -> case S.getVersion of
> Just _ -> (S.=~)
> Nothing -> (F.=~)
>
> main = print (("ba" =~ "(.)a") :: (String,String,String,[String]))
The R.getVersion and S.getVersion detect whether it was compiled against PCRE or
PosixRE. The (=~) is then chosen at run time.
More information about the Haskell-Cafe
mailing list