Am Samstag, 29. November 2003 23:58 schrieb ajb@spamcop.net:
G'day all.
Quoting Wolfgang Jeltsch <wolfgang@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