Browse thread
anonymous record types in variants
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| 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.
Didier.