Why are strings linked lists?
Wolfgang Jeltsch
wolfgang at jeltsch.net
Sun Nov 30 15:33:27 EST 2003
Am Samstag, 29. November 2003 23:58 schrieb ajb at spamcop.net:
> G'day all.
>
> Quoting Wolfgang Jeltsch <wolfgang at jeltsch.net>:
> > I think, I have already said the following on this list. I would also like
> > to have different character types for different subsets of Char (e.g.,
> > ASCII) and a class Character which the different character types are
> > instances of.
>
> As a matter of interest, what might some of the methods of this class be?
> ord and chr are two obvious choices. What else?
Hello,
I have such a Character class in my Seaweed library. You may have a look at
http://cvs.sf.net/viewcvs.py/seaweed/code/Seaweed/Core/Characters.hs
and
http://cvs.sf.net/viewcvs.py/seaweed/code/Seaweed/Core/Characters/ASCII.hs
The class has two methods, toCharacterMonad and fromCharacter, converting
between ordinary Chars and instances of the Character class. The second
function uses monads for error handling; it yields return <something> if
conversion was successful and fail <something> if not. Several functions are
implemented on top of these two methods.
I created the Character class since I'm working with text-based network
protocols and text-based file formats (like XML) where characters are often
restricted to certain sets. I wanted to have such restrictions forced by the
compiler.
IMHO, it would be nice to also have some support for the Character class by
the syntax of Haskell. I could imagine declarations of the form
chartype ASCIIPrintable = ' ' .. '~'
chartype ASCIICtrl = '\000' .. '\037' | '\177'
A char literal like 'A' could denote not only a Char value but a value of any
type which is an instance of Character. A default mechanism similar to Num
could be introduced also with characters.
> Cheers,
> Andrew Bromage
Wolfgang
More information about the Haskell
mailing list