On Thu, Apr 20, 2006 at 10:32:37AM +1000, Donald Bruce Stewart wrote:
ashley:
Donald Bruce Stewart wrote:
Interface: http://www.cse.unsw.edu.au/~dons/fps/Data.FastPackedString.html
Given that FastString turns out to be an array of Word8, why are you using Char at all?
Convenience. Some historical legacy from darcs. And others have contributed patches specifically to add more Word8 support.
I think the biggest barrier to using Word8 operations on String-like types is the Read/Show instance for Word8, which works like for other Word types: Prelude Data.Word> map (toEnum . fromEnum) "Haskell" :: [Word8] [72,97,115,107,101,108,108] Maybe we should introduce a Char8 type, or something like that, which would have the nice Stringy presentation? There is also a problem with literals. How about solving it by adding a Num-like Character class? Consider: Prelude> :t 1 1 :: (Num t) => t Prelude> :t "abc" "abc" :: CharAscii c => [c] Prelude> :t "aąbcć" "aąbcć" :: CharUnicode c => [c] or even: Prelude> :t "aąbcć" "aąbcć" :: CharacterPolish c => [c] ;-) And a String class would allow typing FastPackedString literals directly. Best regards Tomasz