From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Functions vs constants Date: Thu, 24 Jul 2014 14:50:12 +0200 Organization: cbb software GmbH Message-ID: <1eb6fsdonkyq5$.vqa213lr7nn6$.dlg@40tude.net> References: <1mikt4q7wyp7e.10ub8ezxvsvei$.dlg@40tude.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: ot/DC7n2aCvt5pcTM4dZCw.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:21180 Date: 2014-07-24T14:50:12+02:00 List-Id: On Thu, 24 Jul 2014 12:49:30 +0200, G.B. wrote: > On 24.07.14 12:11, Dmitry A. Kazakov wrote: >>> I think that homonyms like "+" and "Put" could be put on the "overriding" >>> >side of "overriding vs overloading", couldn't they? > >> 1. Not without MI and MD, obviously. E.g. all types defining "+" would be >> descendants of Additive_Group interface. > > Considering frequent additions, > > a) won't the sum typically be produced from arguments > of the same specific additive group, and Sometimes yes, if you mean whether addition is covariant. But not always, e.g. matrix addition when dimension is a part of the type. > b) won't the result be added to more of the same specific > type or else be subject to type conversion? An implicit conversion, e.g. to a sub/supertype? ----------------- But I don't see how these details resolve the issue. If you want to get rid of overloading, you must bring all arguments of the operation under one roof. Since arguments may be from different type hierarchies, e.g. Put (File, Value) you need MD to glue the hierarchy of files (rendering contexts) with the hierarchy of printable entities in Put. MI is needed because the hierarchies are not trees. You need glue additive (+) and multiplicative groups (*) in some types (Integer), but not in all types (Vector). -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de