[metapost] On simulating def with vardef
nvitacolonna at gmail.com
Tue Jun 30 11:50:51 CEST 2009
I used to think that a vardef behaves like a primary because its
replacement text is surrounded by begingroup/endgroup. But, recently, I
have tried this:
def foo = x enddef;
foo := 1; % Ok, sets x=1
vardef foovar = endgroup gobbled true x gobble begingroup enddef;
foovar := 2; % Not ok: ! Improper `:=' will be changed to `='.
I conclude that the replacement text of a vardef macro is treated as a
primary in any case. Is it correct? Is there a way to have a vardef in
the left hand side of an assignment in some circumstances?
For those who are care, what I would like to achieve is something like:
vardef suffixof prefixof @# =
endgroup gobbled true @# gobble begingroup
vardef prefixof x@# =
endgroup gobbled true suffixof #@.@ gobble begingroup
prefixof x.a := 0;
would set x=0 (I know that I can use 'str', but I would like to know if
this is possible without it).
More information about the metapost