Ensure-program-only
Ensure that named functions are and remain in :PROGRAM mode.
Example Form:
(ensure-program-only my-fn your-fn)
General Form:
(ensure-program-only fn1 fn2 ... fnk)
where each fni is a literal symbol which should have a program
mode definition. An error is raised if any fni is not a program mode
function. Also, each fni not already flagged as "program only" is
flagged as such. This prevents it from being migrated to logic mode
or being used in a macro.
This is actually a combination of assert-program-mode and
ensure-program-only-flag.
This is a pseudo-event, meaning it can be used in an event context but does
not (ever) change the world.
Note that the normal undoing mechanism (see ubt) does not undo the effects
of this pseudo-event.