On Wednesday, 2002-07-24, 20:29, CEST, Hal Daume III wrote: > I was wondering if anyone's thought of overloading string literals in > the same way that numeric literals are overloaded. I know that I tend > to use PackedStrings for almost everything, primarly due to the RegExp > stuff and efficiency. This means my code is littered with "unpackPS" > and "packString", as in > > ... if foo == packString "bar" ... > > or > > ... if unpackPS foo == "bar" ... > > I was wondering if someone might consider overloading Strings, too. > Something like: > > class StringLiteral s where > fromString :: String -> s > toString :: s -> String -- not necessary, really > > then literals in haskell source could be converted from > > ... "foo" ... > > to > > ... (fromString "foo") ... > > we'd have instances like > > instance StringLiteral String where fromString = id > instance StringLiteral PackedString where fromString = packString > ...etc... > > if not something in ghc, perhaps this might find its way into drift??? > > - hal > [trailer]
Hi, I already have a similar idea for characters. In my Seaweed library, I have a lot of types which describe different subsets of the Unicode character set. Examples are ASCIIChar, PASCIIChar (for printable ASCII characters), and GASCIIChar (for graphical ASCII characters) but also types for domain specific character sets. Each of these types is an instance of a class Character which has the two methods toChar and fromChar. I would be happy if I could denote values of Character instances by just using character literals, and if I could pattern-match against such values. (Maybe, for the latter thing, one needs the conversion back to the standard type.) But my idea goes beyond this. I thought of some kind of a "character type definition" --- something like charactertype ASCIIControlChar = '\NUL' ..'\US' | '\DEL' --- which introduces a character type and automatically instantiates several classes (e.g. Eq, Ord, Show, Read and, of course, Character) in a manner suitable for character types. This would save me a lot of time of writing all the similar looking instance declarations. (By the way, StringLiteral would be an improper name for your class because instances of the class, like PackedString, describe strings and not string literals.) Wolfgang _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell