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,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,f039470e8f537101 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-07-29 06:43:45 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!cyclone.bc.net!newsfeed.telusplanet.net!newsfeed2.telusplanet.net!newsfeed.telus.net!nntp.abs.net!ash.uu.net!spool.news.uu.net!not-for-mail Date: Tue, 29 Jul 2003 09:43:43 -0400 From: Hyman Rosen User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030611 Thunderbird/0.1a X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Non-philosophical definition of Eiffel? References: <3F200AD0.94F79098@adaworks.com> <7u9Ua.13412$634.10307@nwrdny03.gnilink.net> <3F215120.1040706@attbi.com> <1059151910.357790@master.nyc.kbcfp.com> <1059416297.548253@master.nyc.kbcfp.com> In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Organization: KBC Financial Products Message-ID: <1059486223.780998@master.nyc.kbcfp.com> Cache-Post-Path: master.nyc.kbcfp.com!unknown@nightcrawler.nyc.kbcfp.com X-Cache: nntpcache 3.0.1 (see http://www.nntpcache.org/) NNTP-Posting-Host: 204.253.250.10 X-Trace: 1059486224 25998 204.253.250.10 Xref: archiver1.google.com comp.lang.ada:40945 Date: 2003-07-29T09:43:43-04:00 List-Id: Dmitry A. Kazakov wrote: > How could it be otherwise? > [If the argument type is contravariant, then the subroutine is not a > method in this argument => it is not inherited.] It could be, in some other language. You could explicitly designate which method was being overridden, and allow contravariant arguments. > That's not Effel's problem. This a problem of type specialization > which inevitably breaks out-methods. Nothing can be done about it. You can disallow it! Eiffel's problem is that it allowed such things without a good way of avoiding errors at the call sites, short of whole-program verification or runtime type checks. > BTW, generalization breaks in-methods. In short, the notion of > absolute substitutability (the way many are treating LSP) is useless > absolutely. OO programming in its most mechanical sense involves derived classes overriding base methods, and allowing those methods to be invoked by things which know only the base. You can break that paradigm if you want, but then you should probably call it something else, so you don't confuse people.