On Sun, 2007-05-20 at 16:59 +0100, Duncan Coutts wrote: > isSpace c = c == ' ' || > c == '\t' || > c == '\n' || > c == '\r' || > c == '\f' || > c == '\v' || > c == '\xa0' || > iswspace (fromIntegral (ord c)) /= 0 > > iswspace does a generic lookup in the unicode property database I think.
So there's little hope of beating iswspace unless your input contains a lot of spaces, I guess - for all non-space, we call iswspace, which presumably repeats the tests for ASCII space. Wouldn't something along these lines be more efficient? isSpace :: Char -> Bool isSpace = isSp . ord isSp c | c <= 13 = c >= 8 -- \b..\r | c <= 127 = c == 32 -- ' ' | c <= 255 = c == 0xa0 -- nbsp | otherwise = iswspace(..) A quick test shows about a factor two improvement on /usr/share/dict/words, but that will of course only trig the first match. -k _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users