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=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: border1.nntp.dca3.giganews.com!backlog3.nntp.dca3.giganews.com!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!feeder.erje.net!eu.feeder.erje.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Niklas Holsti Newsgroups: comp.lang.ada Subject: Re: 'Protected' abstract subprograms Date: Sat, 11 Jan 2014 15:42:39 +0200 Organization: Tidorum Ltd Message-ID: References: <839fee13-2743-49f6-a7f3-f95578386201@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: individual.net 77Ux2MGRW8xKeZuh1fds3A9auLErklJC1PoYNq31YRmypm2LAo Cancel-Lock: sha1:a8buasBQCucLv8OnhphMVQjmLO0= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 In-Reply-To: X-Original-Bytes: 2288 Xref: number.nntp.dca.giganews.com comp.lang.ada:184395 Date: 2014-01-11T15:42:39+02:00 List-Id: On 14-01-11 10:59 , Dmitry A. Kazakov wrote: > First, and foremost, never re-dispatch, that is semantically broken [*], Not all of us agree with that, and I'm one of them. (I'm just adding a note to this conversation; I'm not trying to reopen our earlier discussion on this point with Dmitry, which did not lead anywhere.) > potentially unmaintainable (due to substitutability hell) and inefficient > too. I've had no such problems. > * When you dispatch in a body of an operation that means that the body is > valid for more than one type. Many types = class. Operation for all class = > class-wide operation. Yes, but "many types" is not the same as "all class". I find it useful to have primitive operations that implement some behaviour that is not class-wide, because some types in the class need to alter (override) the behaviour, yet these operations depend on type-specific lower-level behaviour, and therefore they call primitive operations with redispatch. > Re-dispatch breaks this model and effectively makes your design > un/weakly typed. I don't agree, because my conceptual "model" is different. Your model is stronger (more specific) than mine, which paradoxically means that it is easier to break :-) -- Niklas Holsti Tidorum Ltd niklas holsti tidorum fi . @ .