Restricted Types and Infinite Loops

Simon Peyton-Jones simonpj at microsoft.com
Thu Mar 10 04:28:10 EST 2005


Simon: as I mentioned yesterday, I think I've fixed your infinite-loop
problem.
If you can build GHC from source, or use last night's snapshot build,
you could see
if you agree that it's fixed.  

Simon

| -----Original Message-----
| From: Simon David Foster [mailto:s.d.f at btinternet.com]
| Sent: 18 February 2005 09:36
| To: Ralf Laemmel
| Cc: GHC Users; Simon Peyton-Jones
| Subject: Re: Restricted Types and Infinite Loops
| 
| On Fri, 2005-02-18 at 02:18 +0100, Ralf Laemmel wrote:
| 
| > Here I assume that you don't _really_ depend on ClassB to be a
| > superclass of ClassA. (Why would you?)
| 
| Ok, here's what the real class head is (or was before I butchered it
to
| make it work);
| 
| class (Data (DictXMLData h) a, XMLNamespace a) => XMLData h a where
| 
| We want to do this so that it is unnecessary to store XML Namespaces
in
| the XMLData instances (which is supposed to be for only encoding).
There
| are two reasons why this is necessary;
| 
| * 1 - We have another class XSDType a, which gives types an XSD Type.
| This also depends on the types having a namespace. If we don't have
this
| class dependency, we end up with repeated data.
| * 2 - In various contexts, you will require a different namespace for
a
| particular element, but the same encoder. For example, when creating a
| SOAP Envelope, the "int" data-type could have the SOAP Encoding
| namespace or it could have the XSD Namespace. Further it may not have
a
| namespace at all, in which case the default instance (XMLNamespace a)
| will take over. By taking the dependency out you bind a particular
| namespace to an encoder.
| 
| For now, the various encoders for XSD data-types are in the XSD
Module,
| this means that any user that wants to encode an int or string must
| import the XSD module, since we can't centralise the encoder.
| 
| > This is a simpler recursion scheme in terrms of class/instance
constraints.
| 
| Maybe, but sadly it doesn't achieve my goal. I could do Namespaces via
a
| hook, but that makes the construction and encoding of namespace tables
| almost impossible.
| 
| Thanks,
| 
| -Si.
| 
| --
| Simon David Foster <s.d.f at btinternet.com>



More information about the Glasgow-haskell-users mailing list