[Haskell-cafe] Re: Compiling regex-posix-0.93.2 on windows

ChrisK haskell at list.mightyreason.com
Thu Jan 15 17:00:50 EST 2009

Paulo: I suggest doing this more carefully.

Get the source from hackage.

Edit the regex-posix.cabal file to add the include and lib directories you need 
on Cygwin.

cabal "configure" it.

cabal "build" it.

cabal "install" it.

Then in an unrelated directory try and run "ghci -package regex-posix".  This 
should load regex-posix-VERSION.  If this fails then I think that the cabal file 
needs fixing.

If that works then please test it with these commands:
> Prelude> :m + Text.Regex.Posix
> Prelude Text.Regex.Posix> (Text.Regex.Posix.=~) "ab" "(()|[ab])(b)" :: (String,String,String,[String])

The right answer by the way is:
 > ("","ab","",["a","","b"])

But on FreeBSD/NetBSD/OS X there is a bug that I have found and it prints:
 > ("a","b","",["","","b"])

Which just goes to show that a mountain of QuickCheck is what is sometimes 
needed to catch really hard to trigger bugs.

This is the other bug I reported:
> Prelude Text.Regex.Posix> (Text.Regex.Posix.=~) "XababaY" "(X)(aba|ab|b)*(Y)" :: (String,String,String,[String])
> ("","XababaY","",["X","b","Y"])

The above answer is impossible (what matched "a" next to "b"?), but I now think 
I know WTF the library code is doing wrong (I think it is matching "ababa" in 
two passes and the second pass is greedy which is a broken strategy).  The right 
answer is:

 > ("","XababaY","",["X","aba","Y"])


PS: Yes, I have reported these bug to Apple, FreeBSD, and NetBSD this month.

More information about the Haskell-Cafe mailing list