On Thu, Dec 10, 2020 at 1:33 PM Paul Smith <psm...@gnu.org> wrote:

> On Thu, 2020-12-10 at 18:19 +0000, DUDZIAK Krzysztof wrote:
> > Operators ‘=’ ‘:=’ ‘::=’ seem to have two dimensions these control
> > things expansion recursiveness (simple vs. recursive expansion)
> > expansion time (immediate vs. deferred)
>
> No, there is only one dimension really.
>
> Either the content of the variable is expanded exactly once when it's
> defined, or else it's not expanded when it's defined and is expanded
> every time the variable is used.
>
> All other aspects are just side-effects of this single difference.
>
> I do agree that the terms "recursive variable" and "simple variable"
> are misleading and/or not very informative.  These terms have been used
> in the docs since it was created.
>

In the internal docs I've written for my company's build automation (based
on GNU make), I explain recursive and simple variables via analogies to C
preprocessor macros vs. C variables, which works well for most of those
using the automation (which was designed for C and C++ builds). Delayed
evaluation vs. immediate evaluation rvalues might work for others. Either
way, I agree that the existing terminology is at best unhelpful for
developers of other languages, and at worst misleading.

Reply via email to