Name clash with EXT::EXECUTE
Posted: Fri Aug 05, 2016 1:12 pm
I'm reviving the classic Boyer-Moore theorem prover, "nqthm", from the 1992 sources. It almost works with "clisp", but there's a name clash.
Following directions from ftp://ftp.cs.utexas.edu/pub/boyer/nqthm ... 992/README, I get the following error:If I type "continue" at this point, the program runs, with EXT::EXECUTE having been overridden.
The problem is in the source file ftp://ftp.cs.utexas.edu/pub/boyer/nqthm ... e-e-m.lisp which, at line 675, has
(DEFUN EXECUTE (PROCESS CL HIST NORMAL-EXIT NO-CHANGE-EXIT) ...
This file starts with (IN-PACKAGE "USER"), so EXECUTE should be defined as USER::EXECUTE. Despite this, there's a name clash, apparently because the EXT package exports all of its exported symbols into the current namespace, and locks its own package, making its exported symbols de-facto reserved words.
There's a comment in the code:
I could go into the source code and rename all occurrences of EXECUTE to something else, such as EXECUTE-PROCESS; there are only about 8 occurrences. But I'd prefer not to modify the classic source code, untouched since 1992. Is there a better way to do this?
Following directions from ftp://ftp.cs.utexas.edu/pub/boyer/nqthm ... 992/README, I get the following error:
Code: Select all
(load-nqthm)
;; Loading file /home/john/projects/nqthm/nqthm-1992/sloop.fas ...
...
;; Loading file /home/john/projects/nqthm/nqthm-1992/code-e-m.fas ...
** - Continuable Error
DEFUN/DEFMACRO(EXECUTE): #<PACKAGE EXT> is locked
If you continue (by typing 'continue'): Ignore the lock and proceed
The following restarts are also available:
SKIP :R1 skip 675 683 (DEFUN EXECUTE (PROCESS CL HIST ...) ...)-25
RETRY :R2 retry 675 683 (DEFUN EXECUTE (PROCESS CL HIST ...) ...)-25
STOP :R3 stop loading file /home/john/projects/nqthm/nqthm-1992/code-e-m.fas
ABORT :R4 Abort main loop
Break 1 [6]>
The problem is in the source file ftp://ftp.cs.utexas.edu/pub/boyer/nqthm ... e-e-m.lisp which, at line 675, has
(DEFUN EXECUTE (PROCESS CL HIST NORMAL-EXIT NO-CHANGE-EXIT) ...
This file starts with (IN-PACKAGE "USER"), so EXECUTE should be defined as USER::EXECUTE. Despite this, there's a name clash, apparently because the EXT package exports all of its exported symbols into the current namespace, and locks its own package, making its exported symbols de-facto reserved words.
There's a comment in the code:
Code: Select all
; Sadly, we do everything in the USER package. This is not the best
; Lisp style for an old and established Common Lisp system, but it is
; by far the simplest and clearest approach we could find given the
; variety of implementations of Common Lisp's "Put in seven extremely
; random user interface commands". If your USER package contains
; symbols that conflict with ours, we apologize but offer no fix.