"Lawrence D'Oliveiro" 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.