You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
paip.asd introduces a package PAIP which helps to deal with ANSI CL incompatibilities.
Unfortunately the file does not document why it is doing that and which issues it fixes how.
it is undefined to define a function for an external symbol of the package CL. This is the case for PAIP functions SYMBOL, DEBUG, IGNORE and OPTIMIZE. Thus the new package PAIP shadows these symbols. This then makes it impossible to use (declare (ignore ...)). One has to use (declare (cl:ignore ...). Similar for (declare (optimize ...)).
the shadowing definition of DEFCONSTANT has been provided because in ANSI CL it is only allowed to call DEFCONSTANT again with the same value. The same here means EQL. Thus (defconstant foo "foo") can't be called twice, while (defconstant bar 1) can. The paip code uses DEFCONSTANT with strings and lists - those are not necessarily EQL.
Unfortunately the paip.asd
creates new problems:
unfortunately the paip lisp source files have no package in the modeline and no in-package.
Which can make editing a pain, since the editor might not know that all the code is in the PAIP package.
functions which use FIND-SYMBOL, INTERN and READ-FROM-STRING might need to be updated to look in the correct package. If there is no package parameter, they will look into whatever package is the runtime value of *PACKAGE*
the paip.asd file does not include modules for most of the source files - thus compiling/loading is done with a different mechanism
The text was updated successfully, but these errors were encountered:
paip.asd introduces a package PAIP which helps to deal with ANSI CL incompatibilities.
Unfortunately the file does not document why it is doing that and which issues it fixes how.
it is undefined to define a function for an external symbol of the package CL. This is the case for PAIP functions SYMBOL, DEBUG, IGNORE and OPTIMIZE. Thus the new package PAIP shadows these symbols. This then makes it impossible to use (declare (ignore ...)). One has to use (declare (cl:ignore ...). Similar for (declare (optimize ...)).
the shadowing definition of DEFCONSTANT has been provided because in ANSI CL it is only allowed to call DEFCONSTANT again with the same value. The same here means EQL. Thus (defconstant foo "foo") can't be called twice, while (defconstant bar 1) can. The paip code uses DEFCONSTANT with strings and lists - those are not necessarily EQL.
Unfortunately the paip.asd
creates new problems:
unfortunately the paip lisp source files have no package in the modeline and no in-package.
Which can make editing a pain, since the editor might not know that all the code is in the PAIP package.
functions which use FIND-SYMBOL, INTERN and READ-FROM-STRING might need to be updated to look in the correct package. If there is no package parameter, they will look into whatever package is the runtime value of *PACKAGE*
the paip.asd file does not include modules for most of the source files - thus compiling/loading is done with a different mechanism
The text was updated successfully, but these errors were encountered: