%mathpiper,def="Unholdable"


Rulebase("Unholdable",{var});

HoldArgument("Unholdable",var);

UnFence("Unholdable",1);

Rule("Unholdable",1,10,IsEqual(Type(Eval(var)),"Eval"))
[
    MacroBind(var,Eval(Eval(var)));
    //Echo({"unheld",var,Eval(var)});
];


Rule("Unholdable",1,20,True)
[
    //Echo({"held"});
  True;
];

%/mathpiper





%mathpiper_docs,name="Unholdable",categories="Programmer Functions;Programming;Built In"
*CMD Unholdable --- make a variable unholdable

*CALL
    Unholdable(var)

*PARMS

{var} -- a variable

*DESC
This function makes a variable unholdable.  It is used to make sure that an :=
operator with an Eval() immediately to its right hand side evaluates its argument.
%/mathpiper_docs