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