Sujet : Re: Ichbiah 2022 compiler mode
De : randy (at) *nospam* rrsoftware.com (Randy Brukardt)
Groupes : comp.lang.adaDate : 12. Sep 2024, 06:39:27
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vbtr9t$327q$1@dont-email.me>
References : 1 2 3
User-Agent : Microsoft Outlook Express 6.00.2900.5931
"Lawrence D'Oliveiro" <
ldo@nz.invalid> wrote in message
news:vbdk2t$hj0r$6@dont-email.me...On Thu, 5 Sep 2024 19:03:22 -0500, Randy Brukardt wrote:
...
(10) Variable-returning functions are introduced.
>
Is this like updater functions in POP-11, or "setf" in Lisp? So you have a
procedure
>
set_var(�var�, �new value�)
>
which is declared to be attached to �var� in some way, such that when you
write
>
�var� := �new_value�
>
this automatically invokes set_var?
No, it is a function that returns a variable, meaning you can assign into
the function result. If you have:
function Foo return variable Integer;
then you can use Foo on either side of an assignment:
Foo := 1;
Bar := Foo + 1;
Essentially, this idea treats:
Var : variable Integer;
as syntactic sugar for
function Var return variable Integer;
The worth of that is two-fold: (1) Objects and functions now resolve the
same; (2) one can write a function that acts exactly like an object, and
thus can replace it in all uses.
Note that Ada currently has generalized reference objects and functions that
return anonymous access types, and both of these act similarly to a variable
returning function. But neither is quite a perfect match.
Randy.