comp.lang.ada
 help / color / mirror / Atom feed
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))





  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