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=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,75a8a3664688f227 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-01-13 14:35:31 PST Path: supernews.google.com!sn-xit-02!supernews.com!news.gv.tsc.tdk.com!news.iac.net!news-out.cwix.com!newsfeed.cwix.com!sjc-peer.news.verio.net!news.verio.net!sjc-read.news.verio.net.POSTED!not-for-mail Newsgroups: comp.lang.ada From: Brian Rogoff Subject: Re: Parameter Modes, In In Out and Out In-Reply-To: <93q6cd$r3k$1@nnrp1.deja.com> Message-ID: References: <3A57CD7F.2228BFD5@brighton.ac.uk> <938p3u$omv$1@nnrp1.deja.com> <93cagm$c1j$1@nnrp1.deja.com> <93e4e6$ucg$1@nnrp1.deja.com> <93encq$brm$1@nnrp1.deja.com> <93f6ar$m44$1@nnrp1.deja.com> <93flab$2mh$1@nnrp1.deja.com> <93fqau$6m2$1@nnrp1.deja.com> <93h9mo$bbm$1@nnrp1.deja.com> <93il87$iqo$1@nnrp1.deja.com> <93k6dv$qt6$1@nnrp1.deja.com> <93ko49$auq$1@nnrp1.deja.com> <93modu$36k$1@nnrp1.deja.com> <93n2co$alq$1@nnrp1.deja.com> <93q39q$oq0$1@nnrp1.deja.com> <93q6cd$r3k$1@nnrp1.deja.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Date: Sat, 13 Jan 2001 22:32:55 GMT NNTP-Posting-Host: 206.184.139.136 X-Complaints-To: abuse@verio.net X-Trace: sjc-read.news.verio.net 979425175 206.184.139.136 (Sat, 13 Jan 2001 22:32:55 GMT) NNTP-Posting-Date: Sat, 13 Jan 2001 22:32:55 GMT Organization: Verio Xref: supernews.google.com comp.lang.ada:3993 Date: 2001-01-13T22:32:55+00:00 List-Id: On Sat, 13 Jan 2001, Robert Dewar wrote: > dmitry6243@my-deja.com wrote: > > You surely do not think that I am able to produce a complete > > proposal, how to incorporate MD in Ada (:-)). > > On the contrary, I assume that if you are arguing this point, > you understand both Ada and MD well enough to do exactly that, > and for instance that you are familiar with CLOS. It is really > not that hard to propose the basic outline of an MD facility > for Ada 83, we sketched out various ideas during the design > process, but nothing that was reasonable. > > Now if your emphasis is on *complete* here, i.e. with all the > details of semantic interactions worked out, then that > statement makes sense, but we don't need to go there to > discuss whether MD is useful. Just sketch out what MD would > mean to you in an Ada environment, and produce an example, > showing what you would like to be able to write. I'd like to be able to write something like package Shape_Output is type Shape_Type is tagged private; ... type Output_Type is tagged limited private; procedure Write(Shape : in Shape_Type; Output in out Output_Type); private ... end Shape_Output; where write is a primitive operation of Shape_Type and Output_Type and the dispatching can select based on both which code gets called. :-) > If you can't get this far, then there is no point in even > discussing what the details are. Is that far enough? Before anyone answers, I'm familiar with the double dispatching idiom, and the Visitor pattern, and Dylan, and I actually believe the designers of Ada were right not to provide direct support for this in Ada given what we currently know. I also think that some form of downward funarg would be a lot more useful in day-to-day programming than multimethods, though I guess I wouldn't call Ada crippled or hobbled. I'd just say that it's an annoyance that I wish wasn't there. (Sorry, couldn't resist :) > I am beginning to worry that you are promoting MD without a > clear idea of how it would work, or how it would be used, > just on the basis of some vague theoretical understanding. >From my POV, its clear that it could be useful, but when you think about how it should work and how to implement it in Ada you start wondering about the gain. > > > To make your case, why not do the following > > > > > > a) propose, in rough form, no need to tie up the details > > > an MD addition to Ada > > > > > > b) show one example where this MD addition really adds > > > to expressive power. > > > > > > I think that's a reasonable request, the burden of proof is > > > definitely on your side for adding new features. What is > > > interesting then is to contrast the best possible solution > > > without MD to the example you show. How is the example of object IO above? I think you can generalize that to lots of similar cases. What I'm really curious about is how many good, natural examples of MM use more than two dispatching arguments. Anyone have a good one? > I assume you are familiar with Tucker's proposal in this > area (the above seems a bit rambling to me, I really can't > tell what you mean). Tucker's proposal seems exactly the > right direction to follow if you want to pursue MI. Yes, Tucker's note on adding Java style interfaces is really worth a read, and I'd advise anyone who wants to contribute their two cents to Ada 0X language design discussions to just read that, and also Tucker's proposal about blending protected types and tagged types better. And I guess it goes without saying that I hope GNAT is quick to implement some of these ideas... -- Brian