Hello all,
There are lingering problems with the dictionary management in and
around optional packages that mess with system-level deferred definitions.
In particular, FPMATH and BLKEDIT have these problems.
The root of the problem is in: how do you correctly restore an
arbitrary set of deferred words when a) they have been redefined and
b) when the new vectors are going away?
The answer is in the :REMEMBER and :PRUNE behaviors, but these are
so difficult to program correctly for all cases that they become problematic.
The simplest answer is: optional packages that redefine system deferred
words should a) be loaded once, and b) should never be removed from the
active dictionary. To accomplish these goals requires that the OPTIONAL
tag be present on the first line of the file (which it is) and that,
instead of the :REMEMBER and :PRUNE behaviors, the file has this line
at its very end:
ONLY FORTH ALSO DEFINITIONS S\" GILD\N" PUSHTEXT
This delays the GILD until the file load is truly complete, and makes the
dictionary just created permanent. So, to fix the problem in FPMATH and
BLKEDIT, simply remove the :PRUNE and :REMEMBER behaviors and put
this line at the end of each of the files.
Clear as mud? I suspect it is...
Rick
.
Received on Mon Dec 13 1999 - 12:03:21 PST
Subscribe to our e-mail list service. It's free for all SwiftForth and SwiftX users!
This archive was generated 06-Feb-2012. Archive updated nightly.