From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id AAA25492; Tue, 16 Jul 2002 00:28:33 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id AAA25460 for ; Tue, 16 Jul 2002 00:28:32 +0200 (MET DST) Received: from laurelin.dementia.org ([208.167.88.73]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id g6FMSTn28897 for ; Tue, 16 Jul 2002 00:28:30 +0200 (MET DST) Received: by laurelin.dementia.org (Postfix, from userid 1001) id 6DA5770C7; Mon, 15 Jul 2002 18:35:11 -0400 (EDT) To: Alessandro Baretta Cc: zze-MARCHEGAY Michael stagiaire FTRD/DTL/LAN , Ocaml Subject: Re: [Caml-list] Deep copy References: <0489A7888F080B4BA73B53F7E145F29A1B0AF5@LANMHS20.rd.francetelecom.fr> <3D332851.1080909@baretta.com> From: John Prevost Date: 15 Jul 2002 18:35:11 -0400 (94.110 UMT) In-Reply-To: <3D332851.1080909@baretta.com> Message-ID: <86sn2ksjq8.fsf@laurelin.dementia.org> User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk >>>>> "ab" == Alessandro Baretta writes: ab> I agree so far. But did you actually test the code below? I ab> have reason to believe you are mistaken in believing that ab> mutable fields are shared between Oo.copied objects, in such a ab> way that assignment to such a field in one object will result ab> in a modification in the value of the same field in all ab> copies. I would consider such a behavior a major design flaw ab> in the language. The code he gave is correct. The problem arises not when the object itself contains a mutable field, but when one of its fields contains a mutable value. (An object with a mutable field, a string, an array, a record with a mutable field, a ref, etc.) # class a = object val s = " " method get x = s.[x] method set x c = s.[x] <- c end;; class a : object method get : int -> char method set : int -> char -> unit val s : string end # let x = new a;; val x : a = # x #get 0;; - : char = ' ' # x #set 0 'a';; - : unit = () # x #get 0;; - : char = 'a' # let y = Oo.copy x;; val y : a = # y #get 0;; - : char = 'a' # y #set 0 'b';; - : unit = () # y #get 0;; - : char = 'b' # x #get 0;; - : char = 'b' As far as I can tell, the poster to whom you are responding was simply pointing this out: if a field contains a mutable value (whether the field itself is mutable or not), the contents of that field are copied, which results in physical equality of the field values in those cases where physical identity is important. He doesn't appear to have claimed that the copied fields themselves have physical equality. John. ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners