Are anonymous type classes the right model at all? (replying to Re: Are fundeps the right model at all?)

Johan Nordlander nordland@cse.ogi.edu
Mon, 08 Jan 2001 15:42:16 -0800


Tom Pledger wrote:
> 
> Marcin 'Qrczak' Kowalczyk writes:
>  [...]
>  > My new record scheme proposal does not provide such lightweight
>  > extensibility, but fields can be added and deleted in a controlled
>  > way if the right types and instances are made.
> 
> Johan Nordlander must be on holiday or something, so I'll deputise for
> him.   :-)

No holiday in sight, I'm afraid :-)  I just managed to resist the 
temptation of throwing in another ad for O'Haskell.  But since my name
was brought up...

> O'Haskell also has add-a-field subtyping.  Here's the coloured point
> example (from http://www.cs.chalmers.se/~nordland/ohaskell/survey.html):
> 
>    struct Point =
>       x,y :: Float
> 
>    struct CPoint < Point =
>       color :: Color
> 
> Regards,
> Tom

Notice though that O'Haskell lacks the ability delete fields, which I
think is what Marcin also proposes.  I've avoided such a feature in 
O'Haskell since it would make the principal type of an expression
sensitive to future type declarations.  For example, assuming we have

   f p = p.x ,

its principal type would be Point -> Float if only the type definitions
above are in scope, but OneDimPoint -> Float in another scope where some
type OneDimPoint is defined to be Point with field y deleted.

-- Johan