comp.lang.ada
 help / color / mirror / Atom feed
From: "David Crocker" <dcrocker@imsltd.com>
Subject: Re: 'withing' problem
Date: Wed, 7 Nov 2001 10:11:22 -0000
Date: 2001-11-07T10:11:22+00:00	[thread overview]
Message-ID: <3be907bc$0$233$ed9e5944@reading.news.pipex.net> (raw)
In-Reply-To: io%F7.3554$Mt6.1856123@news1.rdc1.sfba.home.com

<tmoran@acm.org> wrote in message
news:io%F7.3554$Mt6.1856123@news1.rdc1.sfba.home.com...
>    Does "seq" have any children?  Does it inherit things from "anything"?
> Given "x : seq;", what does "toString(x);" produce?  More generally,
> why is "seq" derived from "anything" rather than just standing on its own?

It is usual in OO languages for all classes to derive from a base class. One
of the reasons is that it lets you write things like:

procedure print(x: anything'class, ...)

The implementation of 'print' would call 'toString(x)' and output the
result. So I can use 'print' to print any object I like, and provided the
declaration of the class concerned has overridden the 'toString' method, the
result will make sense (if the class didn't override 'toString', the default
implementation in 'anything' will yield "unprintable object" or something
like that).

> Actually it's the declaration of "toString" that needs a preceding
declaration of "seq".

Correct. But the declaration of 'toString' needs to be in the package for
'anything', so the package for 'anything' needs to 'with' the package for
'seq', and vice versa.

> How about
>
>   type anything is tagged null record;
>   type seq is new anything with record
>     ...
>   end record;
>   function toString(x:anything'class) return seq;
>
> and then use overloading to create
>
>   function toString(x : first_child_of_anything'class) return seq;
>   function toString(x : second_child_of_anything'class) return seq;
>   function toString(x : first_of_first_child_of_anything'class) return
seq;
> etc.

This looks viable, but it means that 'seq' and 'anything' must be declared
in the same package. Unfortunately, every cross-dependency results in the
classes concerned having to be placed in the same package, so before long
you end up with the whole program being in a single package. What we would
like is that each class in the original language becomes a separate package
in Ada.

Thanks for your input.

David Crocker, Escher Technologies Ltd. www.eschertech.com







  reply	other threads:[~2001-11-07 10:11 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-02 10:24 'withing' problem David Crocker
2001-11-02 10:58 ` David C. Hoos, Sr.
2001-11-02 21:32   ` Florian Weimer
2001-11-02 14:49 ` Robert Dewar
2001-11-05  9:49   ` David Crocker
2001-11-02 15:06 ` Wes Groleau
2001-11-02 15:21 ` Ted Dennison
2001-11-02 17:19   ` Ed Falis
2001-11-02 18:17     ` Preben Randhol
2001-11-02 19:15       ` Ed Falis
2001-11-03  2:52       ` DuckE
2001-11-03  9:50         ` Preben Randhol
2001-11-03  8:25   ` Simon Wright
2001-11-03 17:27     ` Richard Riehle
2001-11-04 10:23       ` Simon Wright
2001-11-08 10:58         ` Preben Randhol
2001-11-08 15:24           ` Peter Hend�n
2001-11-10 17:57           ` Simon Wright
2001-11-05  9:48       ` David Crocker
2001-11-05 20:36         ` Ted Dennison
2001-11-06 15:56           ` David Crocker
2001-11-07 15:06             ` Ted Dennison
2001-11-07 16:49               ` Darren New
2001-11-09 20:28         ` Matthew Heaney
2001-11-10 13:55           ` Preben Randhol
2001-11-12 15:10             ` Matthew Heaney
2001-11-10 18:12           ` Simon Wright
2001-11-12 15:13             ` Matthew Heaney
2001-11-13  7:01               ` Simon Wright
2001-11-14 16:10                 ` Matthew Heaney
2001-11-15 20:21                   ` Simon Wright
2001-11-15 21:07                     ` Matthew Heaney
2001-11-16 14:37                     ` Stephen Leake
2001-11-17 22:29                     ` Richard Riehle
2001-11-18 14:53                       ` Simon Wright
2001-11-19  5:51                         ` Simon Wright
2001-11-19 15:23                         ` Matthew Heaney
2001-11-19 17:19                           ` 'withing' problem [code generation] Mark Johnson
2001-11-19 20:58                             ` Stephen Leake
2001-11-19 21:20                               ` Matthew Heaney
2001-11-21  6:20                                 ` Simon Wright
2001-11-20  0:50                               ` Mark Biggar
2001-11-21  6:21                                 ` Simon Wright
2001-11-20 14:42                               ` Mark Johnson
2001-11-20 16:34                                 ` David Crocker
2001-11-20 18:34                                   ` Richard Pinkall-Pollei
2001-11-20 18:43                                   ` Matthew Heaney
2001-11-20 20:37                                     ` Mark Lundquist
2001-11-22 11:49                                     ` David Crocker
2001-11-20 20:35                                   ` Mark Lundquist
2001-11-22 11:42                                     ` David Crocker
2001-11-19 19:30                           ` 'withing' problem Preben Randhol
2001-11-03  8:26 ` Simon Wright
2001-11-03  8:38 ` Simon Wright
2001-11-05  9:54   ` David Crocker
2001-11-05 18:04     ` tmoran
2001-11-06 15:29       ` David Crocker
2001-11-07  0:38         ` tmoran
2001-11-07 10:11           ` David Crocker [this message]
2001-11-07 18:59             ` tmoran
2001-11-08 11:38               ` David Crocker
2001-11-10 18:03                 ` Simon Wright
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox