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,ce0900b60ca3f616 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-11-05 06:59:18 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!fu-berlin.de!uni-berlin.de!tar-alcarin.cbb-automation.DE!not-for-mail From: dmitry@elros.cbb-automation.de (Dmitry A. Kazakov) Newsgroups: comp.lang.ada Subject: Re: Side-Effects in Functions [Rosen Trick] Date: Mon, 05 Nov 2001 14:59:15 GMT Message-ID: <3be6a7a3.22977140@News.CIS.DFN.DE> References: <9rti6v$hcu$1@news.huji.ac.il> <1EyE7.10050$xS6.13527@www.newsranger.com> <9rue9f$j4t$1@nh.pace.co.uk> <9ruiet$kqg$1@nh.pace.co.uk> <3BE3235D.E292B890@boeing.com> <3BE35498.9F6381A2@acm.org> <9s230d$107b5a$2@ID-25716.news.dfncis.de> <5ee5b646.0111040507.5ca7ea23@posting.google.com> <9s3tl3$111hco$1@ID-25716.news.dfncis.de> <5ee5b646.0111041846.93f3e07@posting.google.com> <9s5eub02j61@drn.newsguy.com> <3be666fe.6426140@News.CIS.DFN.DE> <9s5skb09lv@drn.newsguy.com> NNTP-Posting-Host: tar-alcarin.cbb-automation.de (212.79.194.111) X-Trace: fu-berlin.de 1004972336 35214279 212.79.194.111 (16 [77047]) X-Newsreader: Forte Free Agent 1.21/32.243 Xref: archiver1.google.com comp.lang.ada:15805 Date: 2001-11-05T14:59:15+00:00 List-Id: On 5 Nov 2001 03:19:39 -0800, pete@nospam wrote: >In article <3be666fe.6426140@News.CIS.DFN.DE>, dmitry@elros.cbb-automation.de >says... >> > >>But what I presonally cannot understand is why not to allow >>PROCEDUREs having a result, i.e. >> >>procedure Find (Folder : in out Table) return Table_Token; >> >>procedure GetNext (Item_List : in out Iterator) return Element; >> > >this is a joke, right? Nope. It is exactly what is required, namely a subroutine having a distinguished parameter called result and allowed to modify its arguments. It is not a function (in Ada sense), thus it is a procedure. Compare: procedure Find (Folder : in out Table) return Table_Token; with procedure Find (Folder : in out Table; Result : out Table_Token); The difference between them is rather syntactical. Semantically they do same: search table, cash internally the result of search (thus in out for the fist argument), return the found element. Regards, Dmitry Kazakov