Hold on guys.
(1)
At the moment the macros engine doesn't allow to macros to decide to execute the code LATER.
All macros are executed from inner to outer, and from left to right.
This is not good, but it's easier. I will work to see if i can get something better, but that's not trivial.
In the while the only method to get a text not executed is to
quote it.
Till #161 quoting is done by {{quote yo! /quote}} and it was meant to be used rarely.
From next build i will change this into {{\ yo! /}}.
So, i'm the only way to get {{set}} to execute the body later is to do something like
{{set| shout at | {{\ HEY YOU, {{upper|$1}}! /}} }}
then use it via {{^shout at|rejetto}}
this would expand to HEY YOU, REJETTO!
this for sure delays the suffered decision about the name of 'set later'.
we'll have just {{set}} and you'll decide execution by using the quoting markers.
(2)
Let me specify that you won't always need the quoting markers.
{{set| salute | Hi $1!}}
Since we don't use macros inside, we don't need extra markers.
And we'll call it as usual by {{^salute|rejetto}}
(3)
I want to keep it simple.
Not simple for the user, simple for me!
To create a FULL programming language is pointless. I could just invoke an external php, and at least php programmers wouldn't need to learn a new syntax.
This thing makes sense while we keep it low. That's one of the reason i'm not sure about point (1).