From: "Nicolas Cannasse" <warplayer@free.fr>
To: "Eray Ozkural" <erayo@cs.bilkent.edu.tr>, "OCaml" <caml-list@inria.fr>
Subject: Re: [Caml-list] Deep copy
Date: Mon, 15 Jul 2002 17:27:28 +0200 [thread overview]
Message-ID: <000d01c22c14$2f99c590$9400a8c0@warp> (raw)
In-Reply-To: <200207151802.44699.erayo@cs.bilkent.edu.tr>
> > I'm writting a program that manipulates a graph structure and I need to
> > make deep copies of some of the graph nodes. The function Oo.copy
donesn't
> > perform a deep copy and I haven't found any other that could make it.
>
> You mean something like creating a new object on the heap and copying over
the
> contents of an existing object.
>
> If this were C++ all you had to do would be invoking the copy constructor
> Node* x = new Node(old_node);
Errr....
You're supposing here that either the copy constructor is implemented by the
class writer or then that you're using the default copy constructor which
only copy fields, and then do not perform any deep-recursion... It's even
worst because pointers are duplicated so you can get very-unsafe behavior...
> From the documentation OO.copy does look like a deep copy operation:
>
> val copy : < .. > -> < .. >
> Oo.copy o returns a copy of object o, that is a fresh object with the same
> methods and instance variables as o
The "copy" notion is ambiguous, especially when you have mutable fields.
Does the modification of such a field on a copy of an object do influence
the original object ? Or is copy only the image of an object at a given time
? And what if the object manipulate opened streams ?
Not so easy to resolve... I would recommand then to write a copy operator
"by hand".
Nicolas Cannasse
-------------------
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
next prev parent reply other threads:[~2002-07-15 15:28 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-15 10:06 zze-MARCHEGAY Michael stagiaire FTRD/DTL/LAN
2002-07-15 13:42 ` Ken Wakita
2002-07-15 14:43 ` Eray Ozkural
2002-07-15 15:33 ` Ken Wakita
2002-07-15 23:09 ` Ken Wakita
2002-07-15 15:02 ` Eray Ozkural
2002-07-15 15:27 ` Nicolas Cannasse [this message]
2002-07-15 15:40 ` Eray Ozkural
2002-07-15 16:22 ` sebastien FURIC
2002-07-15 15:24 zze-MARCHEGAY Michael stagiaire FTRD/DTL/LAN
2002-07-15 15:24 ` Eray Ozkural
2002-07-15 18:18 ` Alessandro Baretta
2002-07-15 19:53 ` Alessandro Baretta
2002-07-15 22:35 ` John Prevost
2002-07-15 23:03 ` Alessandro Baretta
2002-07-16 8:19 ` John Prevost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='000d01c22c14$2f99c590$9400a8c0@warp' \
--to=warplayer@free.fr \
--cc=caml-list@inria.fr \
--cc=erayo@cs.bilkent.edu.tr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox