Sanitize is not fool proof (yet) .Sanitize2 seems to work as advertized.



> > Are you aware that of the syntax f('x):=... creates a function which
> > does not evaluate x when called?

> No, but I did know about f(x)::= which is the same I presume.

No, it is not the same.  ::= defines a *macro* which is re-evaluated.

Macros are a powerful mechanism which should be used sparingly and
tastefully....
Quoted arguments, in my opinion, are almost never a good idea.  They
make for "convenience" in the short run at the cost of complications
in the long run.
I agree with Michel that getting clean general semantics is the right
solution, however, I am not sure it is as straightforward as something
like "sanitize".

              -s