Version française
Home     About     Download     Resources     Contact us    
Browse thread
syntax bug: copying records
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Mackenzie Straight <eizneckam@g...>
Subject: Re: [Caml-list] syntax bug: copying records
On 12/21/05, Jacques Garrigue <garrigue@math.nagoya-u.ac.jp> wrote:
>   # copy 3;;
>   Segmentation fault

I know. You can check the tag first if you really want. Like this:

let copy x =
  let r = Obj.repr x in
  if Obj.is_block r then
    Obj.obj (Obj.dup r)
  else
    x

Of course, we all know that using Obj is equivalent to using a dirty
syringe you found on the sidewalk, so... Danger!

> This also explains why you need at least one record field in the
> "with" notation, otherwise there is no way to know for sure the type
> of the record you're copying.

True. Well, you don't actually need to know the type (indeed, the
runtime system needs to have enough information to copy values). But I
imagine it could have disastrous consequences when copying abstract
values anyway.