From: Gerd Stolpmann <info@gerd-stolpmann.de>
To: Alessandro Baretta <alex@baretta.com>
Cc: Ocaml <caml-list@inria.fr>
Subject: Re: [Caml-list] Protected methods
Date: Thu, 18 Jul 2002 13:01:30 +0200 [thread overview]
Message-ID: <3D36A00A.7010807@gerd-stolpmann.de> (raw)
In-Reply-To: <3D369B89.1030000@baretta.com>
Alessandro Baretta wrote:
> I'm trying to get the semantics of protected methods of C++. I have a
> class with a method that is not meaningful for the outside world, but
> different instances of this class should be able to invoke this method
> on one another.
>
> I need something like the following pseudocode:
>
> class a =
> object
> method protected m = ...
> method m2 (obj:a) = a # m
> end
>
> I understand this can be obtained by creating a container module for
> class a and restricting the type of a through the module signature. I
> read the manual but was unable to figure out the syntax to do this.
> Would anyone be so kind as to lend a hand?
No, you cannot restrict the type of classes by signatures.
The only way I know to protect a method is to define an opaque
type that is hidden by the signature, e.g.
sample.ml:
type protector = unit
class a =
object
method m () = ...
...
end
sample.mli:
type protector
class a :
object
method m : protector -> XXX
...
end
You cannot call m from other modules because you cannot create values
for the type "protector".
Gerd
--
------------------------------------------------------------
Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany
gerd@gerd-stolpmann.de http://www.gerd-stolpmann.de
------------------------------------------------------------
-------------------
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-18 11:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-18 10:42 Alessandro Baretta
2002-07-18 11:01 ` Gerd Stolpmann [this message]
2002-07-18 11:44 ` Alessandro Baretta
2002-07-19 8:50 ` Jacques Garrigue
2002-07-19 10:01 ` Alessandro Baretta
2000-07-20 0:46 ` Jacques Garrigue
2002-07-20 7:41 ` Alessandro Baretta
2002-07-20 1:31 ` Jacques Garrigue
2002-07-20 7:48 ` Alessandro Baretta
2002-07-20 22:48 ` Dmitry Bely
2002-07-20 23:08 ` Brian Smith
2002-07-22 3:37 ` OCaml's OO design " Jacques Garrigue
2002-07-22 4:20 ` John Prevost
2002-07-20 23:54 ` Alessandro Baretta
2002-07-21 7:52 ` Dmitry Bely
2002-07-21 13:14 ` Alessandro Baretta
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=3D36A00A.7010807@gerd-stolpmann.de \
--to=info@gerd-stolpmann.de \
--cc=alex@baretta.com \
--cc=caml-list@inria.fr \
/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