> I just noticed that it is possible to do (wipe 'T) and (wipe 'meth)
> and thereby setting the values of T and meth to NIL, even though they
> are protected symbols. (I haven’t tested this in 64-bit yet.)
That's right. 'wipe' doesn't check for protected symbols. This could
indeed be improved.
Note, however, that a 100% protection is not possible, or even desired,
primarily for efficiency reasons like in many other situations in
PicoLisp. For example, you can easily do
(let (T 1 meth 2)
Here holds the assumption that this is under user's control.
As far as 'wipe' is concerned, it is indeed a borderline case. As 'wipe'
evaluates its argument, there is always the danger of indirectly passing
such protected symbols.
On the other hand, 'wipe' is typically called internally in database
manipulations, where efficiency is of primary concern.