From: Brian Rogoff <bpr@shell5.ba.best.com>
Subject: Re: controlled type in generic package?
Date: Thu, 08 Feb 2001 21:10:07 GMT
Date: 2001-02-08T21:10:07+00:00 [thread overview]
Message-ID: <Pine.BSF.4.21.0102081248311.18552-100000@shell5.ba.best.com> (raw)
In-Reply-To: <95sgl2$3c8$1@wanadoo.fr>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: TEXT/PLAIN; charset=X-UNKNOWN, Size: 2067 bytes --]
On Wed, 7 Feb 2001, Jean-Pierre Rosen wrote:
> "Ted Dennison" <dennison@telepath.com> a écrit dans le message news: 95p2ab$463$1@nnrp1.deja.com...
> > Also, any instantiations of this generic will have to be done at the
> > library level, since Limited_Controlled is declared at the library
> > level, and types can't be declared at a lower level of scope than their
> > parent types. (As a user, I hate that rule.)
> >
> I have sympathy for this feeling, and I see many people falling into that trap, but to be fair:
> Do you know ANY language that allows it ?
Yes (*). But the real issue in my mind is not so much the issue of nested
derivations as the fact that Controlled is a special kind of tagged type.
I'm not saying that there is a better solution, just that from the user
point of view it's a real PITA.
It's also the case that "controlledness" is infectious in the same way as
"limitedness" which allows getting around single inheritance issues for
controlledness but is still inelegant in my view.
>
> Most OO languages (C++, Java, Eiffel, even Turbo-Pascal) do not allow declaring classes within a subprogram.
> In Ada, all classes must be declared at the same level. In other languages, all classes must be declared at level 0.
> So Ada is actually *more* permissive than other languages...
Yes, C++, Java and Eiffel are fairly "flat" languages, like Python and
unlike Ada. Anyone remember what CLOS does?
-- Brian
(*) Why, OCaml of course! Not that I'd ever likely write code like this...
class point x_init =
object (self)
val mutable x = x_init
method get_x = x
method private move d = x <- x + d
method bump = self#move 1
end
let f x =
let module M = (* nested module necessary for nested class decl *)
struct
class colored_point x (c : string) =
object
inherit point x
val c = c
method color = c
end
let cp = new colored_point x "blue"
let foo = cp#get_x
end in
print_endline ("val = " ^ (string_of_int M.foo))
next prev parent reply other threads:[~2001-02-08 21:10 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-02-06 11:06 controlled type in generic package? Nils Priebe
[not found] ` <slrn97vtf5.ho.lutz@taranis.iks-jena.de>
[not found] ` <95q19j$9d$1@usenet.rational.com>
2001-02-07 10:11 ` Lutz Donnerhacke
2001-02-07 21:57 ` Mark Lundquist
[not found] ` <95p2ab$463$1@nnrp1.deja.com>
2001-02-07 15:08 ` Jean-Pierre Rosen
2001-02-08 15:41 ` Ted Dennison
2001-02-08 18:21 ` Jean-Pierre Rosen
2001-02-08 16:31 ` Florian Weimer
2001-02-08 21:10 ` Brian Rogoff [this message]
2001-02-09 10:39 ` Florian Weimer
2001-02-09 17:02 ` Brian Rogoff
2001-02-09 18:45 ` Florian Weimer
2001-02-13 0:32 ` Nick Roberts
2001-02-14 0:30 ` Jon S Anthony
[not found] ` <x7vg0hd20cm.fsf@smaug.pushface.org>
[not found] ` <hovk6.96$aw5.304@www.newsranger.com>
2001-02-23 20:50 ` Simon Wright
[not found] ` <95q1fa$9e$1@usenet.rational.com>
2001-02-07 15:28 ` Ted Dennison
2001-02-07 16:29 ` Brian Rogoff
[not found] ` <3A82A66D.49DE7EBD@bton.ac.uk>
2001-02-08 15:15 ` Robert Dewar
2001-02-08 16:56 ` Florian Weimer
2001-02-09 10:25 ` John English
2001-02-09 19:46 ` Brian Rogoff
2001-02-07 18:52 ` Pat Rogers
2001-02-07 19:23 ` Pat Rogers
2001-02-07 19:50 ` Ted Dennison
2001-02-07 22:52 ` Jean-Pierre Rosen
2001-02-08 9:36 ` dmitry6243
2001-02-09 8:51 ` Jean-Pierre Rosen
2001-02-09 12:28 ` dmitry6243
2001-02-08 19:58 ` Mark Lundquist
2001-02-10 9:54 ` Thomas Wolf
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox