comp.lang.ada
 help / color / mirror / Atom feed
From: dmitry6243@my-deja.com
Subject: Re: Multiple dispatch (was Re: Parameter Modes, In In Out and Out
Date: Fri, 02 Feb 2001 13:49:22 GMT
Date: 2001-02-02T13:49:22+00:00	[thread overview]
Message-ID: <95edt0$sed$1@nnrp1.deja.com> (raw)
In-Reply-To: 95dm8r$a9a$1@nnrp1.deja.com

In article <95dm8r$a9a$1@nnrp1.deja.com>,
  mark_lundquist@my-deja.com wrote:

> If they expected triple dispatch, then they don't know Ada :-)

Well, in fact Ada does have "MD", defined as follows. If all tags are
same, then dispatch happens as it is expected. If the tags differ the
call is "dispatched" to a "method" that raises an exception. (Quotation
marks are placed for purists (:-)). Run-time exception is an obvious
problem and I can easily imagine applications where such behaviour
would be unacceptable.

> Maybe they really expected covariance, in which case they should have
> used a generic instead.
>
> Another possibility is that the inputs to Compute should be of type
> FuzzyNumber, not FuzzyNumber'Class.  Users of Compute would upcast as
> necessary.  (However, they somehow have to have some reason to believe
> that upcasting yields a meaningful result, which is hard to know
> without seeing into the implementations of the abstractions.  This is
> a general difficulty with programming by extension).

That's another question. No programming by extension was intended. It
was rather an attempt to have different respresentations for same
thing (FuzzyNumber).

> I'm not a computer scientist, and I haven't ever studied multiple
> dispatch, so maybe this is a naive question... but don't you now have
> a problem with cross-coupled sibling dependencies?  Suppose I create
> another type Wild_And_Wooly_Number, derived also from FuzzyNumber?
> How do you fill in your table then?

It is not a naive question. We could say (1) Wild_And_Wooly_Number
knows nothing about SpecialFuzzyNumber. Then a definition of + for any
mixture of SpecialFuzzyNumber and Wild_And_Wooly_Number is not a method
=> not an overriding => either an overloading or illegal. Alternatively
(2) we "just" have to define (no matter implicit or explicit) all
possible combinations involving Wild_And_Wooly_Number and any of
existing successors of FuzzyNumber. If Wild_And_Wooly_Number does not
override +, then the compiler does it implicitly (by taking an
appropritate + where each appearance of Wild_And_Wooly_Number is
replaced by FuzzyNumber). If a programmer overrides at least one, then
there are two possibilities: either to use the default for others (=
unexpected behaviour) or to force the programmer to override all of them
too (= combinatoric explosion).

As I already said in my previous postings, I do not know the answer. I
even do not know whether the answer exists (:-()

--
Regards,
Dmitry Kazakov


Sent via Deja.com
http://www.deja.com/



  reply	other threads:[~2001-02-02 13:49 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-01-06  0:11 Parameter Modes, In In Out and Out i.a.mcleod
2001-01-06  4:58 ` tmoran
2001-01-06 17:06   ` Robert Dewar
2001-01-06 19:50     ` tmoran
2001-01-06 20:31       ` Robert Dewar
2001-01-07  1:59     ` John English
2001-01-07  3:51       ` Robert Dewar
2001-01-08 12:06         ` dmitry6243
2001-01-09  4:32           ` Robert Dewar
2001-01-09 10:05             ` dmitry6243
2001-01-09  4:35           ` Robert Dewar
2001-01-09  9:58             ` dmitry6243
2001-01-09 14:13               ` Robert Dewar
2001-01-09 18:29                 ` dmitry6243
2001-01-09 19:55                   ` Robert Dewar
2001-01-10  0:47                     ` Brian Rogoff
2001-01-10 21:50                       ` Robert Dewar
2001-01-10  9:23                     ` dmitry6243
2001-01-10 21:46                       ` Robert Dewar
2001-01-11 11:46                         ` dmitry6243
2001-01-11 16:48                           ` Robert Dewar
2001-01-11 19:52                             ` Thierry Lelegard
2001-01-11 20:10                               ` Pascal Obry
2001-01-12  8:05                                 ` Florian Weimer
2001-01-12 13:31                               ` gasperon
2001-01-12 14:02                                 ` n_brunot
2001-01-12 17:26                                   ` charlet
2001-01-14 18:23                                     ` n_brunot
2001-01-14 21:05                                       ` Robert Dewar
2001-01-15  8:56                                         ` n_brunot
2001-01-12 11:05                             ` dmitry6243
2001-01-12 13:55                               ` Robert Dewar
2001-01-12 22:10                                 ` Dale Stanbrough
2001-01-13  1:13                                   ` Robert Dewar
2001-01-13 17:29                                 ` dmitry6243
2001-01-13 18:22                                   ` Robert Dewar
2001-01-13 22:32                                     ` Brian Rogoff
2001-01-14  6:02                                       ` Jeffrey Carter
2001-01-14 14:33                                         ` Robert Dewar
2001-01-14 18:14                                           ` Jeffrey Carter
2001-01-14 21:10                                             ` Robert Dewar
2001-01-14 20:45                                         ` Brian Rogoff
2001-01-14 14:23                                       ` Robert Dewar
2001-01-14 20:42                                         ` Brian Rogoff
2001-01-14 21:17                                           ` Robert Dewar
2001-01-15 20:57                                             ` Brian Rogoff
2001-01-15 16:25                                     ` dmitry6243
2001-02-02  7:06                                       ` Multiple dispatch (was " mark_lundquist
2001-02-02 13:49                                         ` dmitry6243 [this message]
2001-01-16 12:22                                 ` Georg Bauhaus
2001-01-13  4:46                           ` Larry Kilgallen
     [not found]                           ` <93ko49$auq$1@nnrp1.deja.coOrganization: LJK Software <eiviJtYj+A7W@eisner.decus.org>
2001-01-13  6:00                             ` Robert Dewar
2001-01-11 21:38               ` mark_lundquist
2001-01-12  0:20                 ` John English
2001-01-12 13:57                   ` Robert Dewar
2001-01-12 20:34                     ` mark_lundquist
2001-01-13 18:06                       ` Brian Rogoff
2001-01-11 21:28             ` mark_lundquist
2001-01-12 12:35               ` dmitry6243
2001-01-12 21:22                 ` mark_lundquist
2001-01-13  1:16                   ` Robert Dewar
2001-02-02  5:42                     ` mark_lundquist
2001-02-02 14:55                       ` Stephen Leake
2001-02-02 20:08                         ` Robert Dewar
2001-02-05 15:00                           ` Stephen Leake
2001-01-13 21:26               ` Jean-Pierre Rosen
2001-01-11 21:24           ` mark_lundquist
2001-01-12 12:13             ` dmitry6243
2001-01-06 16:21 ` Jean-Pierre Rosen
2001-01-09 15:15   ` Thierry Lelegard
2001-01-10 21:53     ` Robert Dewar
2001-01-07 19:15 ` DuckE
2001-01-09 20:44 ` Laurent Guerby
2001-01-09 21:46   ` Florian Weimer
2001-01-10 21:57   ` Robert Dewar
2001-01-10 23:51     ` Tucker Taft
2001-01-11  4:23       ` Robert Dewar
2001-01-11 19:28     ` Laurent Guerby
2001-01-18 18:53 ` FAROOQATIF
replies disabled

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