Browse thread
strange behavior with record type definition
[
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: | 2005-11-12 (15:32) |
From: | Christophe TROESTLER <debian00@t...> |
Subject: | Re: [Caml-list] strange behavior with record type definition |
On Sat, 12 Nov 2005, Florent <florentflament@aist.enst.fr> wrote: > > Ok but with these two record types defined : > type t0 = { x : int ; y : int } ;; > type t1 = { x : int } ;; > > There is no ambiguity about the following expression's type: > { x = 0 ; y = 0 } ;; > Why can't the t0 type be infered ? As said by Nicolas, what would be the type of let f r = { r with x = 1 } > And with this function definition, > let get_y (t:t0) = t.x ;; > I explicitly say to the compiler that t is of type t0, so why does the > compiler infer a t1 type when trying to get the x label of a t0 type value ? Because (at this point) t.x implies t is of type t1. If you do not care to access the fields of t0 after, just reorder your definitions: type t0 = { x : int ; y : int } let get_y t = t.x type t1 = { x : int } ChriS