English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2009-03-04 (16:35)
From: Andreas Rossberg <rossberg@m...>
Subject: Re: [Caml-list] stl?
On Mar 4, 2009, at 17.14 h, Brian Hurt wrote:
> So then you start throwing out the standard instances, among others,  
> you do one for string:
> 	instance Sexpable String where
> 		toSexp s = Atom s
> 		fromSexp (Atom s) = Just s
> 		fromSexp _ = Nothing
> and, a little while later, one for generic lists:
> 	instance Sexpable a => Sexpable [ a ] where
> 		toSexp xs = List $ map toSexp xs
> 		fromSexp (List xs) = mapM fromSexp xs
> 		fromSexp _ = Nothing
> Opps!  Now you have conflicting instances for type String- one the  
> explicit implementation, and one via the generic list.

To be fair, your String instance is using a GHC extension. It is not  
legal in plain Haskell.

IMO, in this particular example, the problem is caused not so much by  
limitations of type classes as such (which exist, of course), but by  
the somewhat questionable idea of defining a fundamental type like  
String as a list of chars, transparently.

- Andreas