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 X-Google-Thread: 103376,6aa1ec264ce25142 X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII Received: by 10.180.103.197 with SMTP id fy5mr148719wib.1.1346225096317; Wed, 29 Aug 2012 00:24:56 -0700 (PDT) Path: q11ni371228169wiw.1!nntp.google.com!feeder1.cambriumusenet.nl!feed.tweaknews.nl!194.134.4.91.MISMATCH!news2.euro.net!news.mixmin.net!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Real syntax problems in Ada Date: Wed, 29 Aug 2012 09:25:00 +0200 Organization: cbb software GmbH Message-ID: References: <1p5r39cusgc1n$.18nj9sytckk6$.dlg@40tude.net> <1xfc5a70g33xq.6o52bn9evjls$.dlg@40tude.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: FbOMkhMtVLVmu7IwBnt1tw.user.speranza.aioe.org Mime-Version: 1.0 X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Content-Type: text/plain; charset="iso-8859-5" Content-Transfer-Encoding: 8bit Date: 2012-08-29T09:25:00+02:00 List-Id: On Wed, 29 Aug 2012 00:18:39 +0400, Vasiliy Molostov wrote: > Dmitry A. Kazakov �����(�) � ����� ������ Tue, > 28 Aug 2012 19:23:42 +0400: > >> a symmetric declaration of a procedure would be: >> >> X : procedure := >> begin >> ... >> end X; > > mnmn. where to apply parameter list declaration (suppose this as procedure > type "constraint")? > > instead of subprogram access types we have objects in itself, how to > operate them? and ":=" is a re-definable construct, as I remember, while > we can not express operations on sub-program body. How about to implement > simple "<", ">" for sub-program bodies? hehe. Bodies are not ordered. But if an order were required, e.g. to have containers, ordered sets of, address could be used for that. There is an important operation on bodies: composition: type Float_Valued is function (X : Float) return Float; X : Float_Valued := begin ... end; Y : Float_Valued := begin ... end; Z : Float_Valued := Y * X; Another operation is inheritance. That is when one body operates T another S and S <: T, inheritance is the body of T composed with type conversion S to T. And of course, parametrization, AKA instantiation of a generic body. Simple non-generic form could deploy discriminants. That would give specialization: type Integrator (Method : ...) is function (X : Float; ...) return Float; -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de