On Fri, Feb 24, 2012 at 3:07 PM, Barney Hilken <b.hil...@ntlworld.com> wrote:
> But the difference is that <= is (potentially) an arbitrary function, so we 
> need to be careful that the instances make sense. A formally correct system 
> would insist that all instances are (at least) reflexive and transitive. But 
> in the case of records, we know what the instances are: they are projection 
> functions. Every single (automatically generated) instance does exactly the 
> same thing: it projects out one component of a record. This isn't like OO 
> polymorphism, where "messages" are actually arbitrary functions which could 
> do anything, the polymorphism is exactly the same as that of fst and snd.

I appreciate the difference and it might be enough of a difference
(from e.g. OO systems) that the problems seen there won't show up in
Haskell under a new record system.

Aside: It is possible to have no scalar fields in records of course.
data R = C { compare :: (a -> a -> Ordering) }

-- Johan

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to