I'm trying to migrate code from using the old Text.Regex to the new
Text.Regex.Base. But, I'm getting type errors. I can't even create a regex.
Looking at the docs, it seems like this should print "bcd":

import Data.Array
import Text.Regex.Base
import Text.Regex.Posix

rx = makeRegex "a(.*)A"

Just (_, mt, _) = matchOnceText rx "abcdA"

main = putStrLn (fst (mt ! 0))


But I get an error:

src\regex.hs:5:5:
    No instance for (RegexMaker regex compOpt execOpt [Char])
      arising from a use of `makeRegex' at src\regex.hs:5:5-22
    Possible fix:
      add an instance declaration for
      (RegexMaker regex compOpt execOpt [Char])
    In the expression: makeRegex "a(.*)A"
    In the definition of `rx': rx = makeRegex "a(.*)A"

src\regex.hs:7:18:
    No instance for (RegexLike regex [Char])
      arising from a use of `matchOnceText' at src\regex.hs:7:18-41
    Possible fix:
      add an instance declaration for (RegexLike regex [Char])
    In the expression: matchOnceText rx "abcdA"
    In a pattern binding: Just (_, mt, _) = matchOnceText rx "abcdA"

Why does it say there is no instance? Isn't the instance imported by
Text.Regex.Posix?

Why in the world is it so complicated just to get a matched substring out of
the text? Is there an easier way?

Thanks,
Lyle
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to