Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
anonymous record types in variants
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 1999-02-18 (12:21)
From: Didier Remy <remy@m...>
Subject: Re: anonymous record types in variants
> But an analogous construction already exists in the object system:

I was expecting this question...  

Yes, it is possible to have anonymous records and still keep principal
types, using `polymorphic' records (a restriction of `extensible records')
--this is the way objects are typed.

However, this will cost at runtime, unless there are very severe,
complicated compile-time/link-time optimizations. (In the case of objects,
this cost is expected because you are programming by message invocation.)

Since there are already objects in Ocaml, the need for
polymorphic/extensible records is not so strong. This would be convenient
but would not add much expressivity (you can always use objects).  Hence the
gain may be insufficient to justify a complication of the language and of
the implementation.

> Another thing that kind of confuses me is open object types.  Can the open
> object type < one : int; .. > be defined directly in any way ?
>   type foo = < one : int; .. >

Yes, but since this is a polymorphic type you have to write:

        type 'a foo  = 'a constraint 'a = < one : int; ..>;;

This captures the polymorphic row variable `..' (that you are not allowed to
name directly) within the constrained type parameter 'a.