> time fails with "bad suffix" error as the var @Z in '_htSet' was
> rebound by my call to 'match'. It looks like there is some unwanted
Using transient symbols would be always an option, but I think it should
not be necessary here.
Actually, we have two bugs:
- Your "*.l" file should properly bind its pattern variables locally
(e.g. 'let' or 'use'). In that respect, it is like a function. This
would make the bug disappear, but just fix the symptom, not the main
- '_htSet' is not correct. Though it protects the pattern variables
('@N', '@V' and '@Z') with 'use', it does not initialize '@Z'. So if
the 'match' in '_htSet' succeeds, '@Z' will be bound to a new value
and everything is OK. But if the 'match' fails, '@Z' is not bound and
may contain any random value.
Now I changed the third line of '_htSet' :
(de _htSet ("Var" Val)
(use (@N @V @Z)
(off @N @Z) # added '@Z'