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: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: function as first class object Date: Mon, 15 Jan 2018 18:37:32 +0100 Organization: Aioe.org NNTP Server Message-ID: References: NNTP-Posting-Host: f8WEMHpTPFsoaovNG/8BOQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 X-Notice: Filtered by postfilter v. 0.8.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:49922 Date: 2018-01-15T18:37:32+01:00 List-Id: On 2018-01-15 17:20, Mehdi Saada wrote: > I'm thinking only of a limited form. > Like writing: > type FILTER_TYPE is access function (S: in STRING) return STRING; > FILTER: FILTER_TYPE := ( TO_BASIC( TO_LOWER ) )'Access > Not sure of the syntax though. Could it done one way or another ? Yes. You declare an abstract filter type with a primitive operation Apply. Then you create handles to that type with the same interface. The purpose of the exercise is to escape limitness of the target types. You derive an object from the abstract filter type with the function as the discriminant of. The implementation of Apply calls to the discriminant function. You derive an object from the abstract filter type with a container of handles. The implementation of Apply calls Apply for the elements of the list passing the result as an argument to the next. You define a compose operation, e.g. "+" on handles that creates an object with two handles in the list taken from the arguments and returns a handle to it. That is. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de