Version française
Home     About     Download     Resources     Contact us    
Browse thread
safe casting
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Yitzhak Mandelbaum <yitzhak@r...>
Subject: safe casting
Hi,

Given two record types that are identical but in name, is it safe (if  
perhaps a poor idea) to cast between functions that are parametric in  
these record types:

e.g. Given,

module A =
struct
   type t = {a:int}
end

module B =
struct
   type t = {a:int}
end

Is this safe ?

module F(Ty: sig type t = {a:int} end) =
struct
   let extract {Ty.a=x} = x
end

module F_A = F(A)
let y = {B.a=3}
(Obj.magic F_A.extract) y

Put another way:  is the implementation of two records w/ identical  
labels the same, or is there a runtime significance to their static  
difference?

Thanks,
Yitzhak

--------------------------------------------------
Yitzhak Mandelbaum
AT&T Labs - Research

http://www.research.att.com/~yitzhak