
I have tried to load the source files of xindy using ACL 4.3, a
commercial Common Lisp implementation made by Franz Inc.
I didn't suceed because of the last bug mentioned in the following
list which I will try to fix...
Roger, here is the list of "bugs" I have found while trying to load
(not compile) the code in the files "dump-xindy.xdy", "defaults.xdy"
and all "*.lsp" files:
- DEFMETHOD is in the LISP package (for Allegro CL 4.3)
==> Errors in "markup.lsp"
- IN-PACKAGE, USE-PACKAGE, REQUIRE, and PROVIDE
should be better called with a string, not with a symbol
The string should match! Case-sensitive!
==> Errors because the arguments of PROVIDE are given in uppercase
whereas the arguments of REQUIRE are in lowercase form.
- All packages have to be created explicitly!
The old behaviour of IN-PACKAGE to create the given package if it
doesn't exist, was removed by X3J13. IN-PACKAGE will...
``An error is signalled if the package does not already exist.''
- *LOAD-PATHS* from "defaults.xdy" is accessed within a DEFPARAMETER
form in "idxstyle.lsp"
Whereas the optional <initial-form> of DEFVAR is not evaluated
unless it is used, DEFPARAMETER always evaluates the mandatory
<initial-form>.
==> Error because *LOAD-PATHS* is unbound when loading
"idxstyle.lsp"
- *LOAD-PATHS* is in the wrong package, it should be either in the
"IDXSTYLE" package or in the "USER" package (and imported to the
"IDXSTYLE" package).
- "locref.lsp" GET-LAYERS is defined more than once
- "index.lsp" TAKE-FIRST is defined more than once
- Allegro CL 4.3 has problems with the &WHOLE keywords in a DEFMACRO,
if it's not the first in the lambda-list.
For DEFINE-ENVIRONMENT-METHODS it chokes at the first use with
Error: Passed 1 too many arguments for arglist (&WHOLE SIGNATURE)
[condition type: PROGRAM-ERROR]
after changing the lambda-list of DEFINE-ENVIRONMENT-METHODS to
(name
(&whole signature usual-argument)
&key open close declare body)
i.e., I add the usual parameter to the single &WHOLE variable,
it will be ok but chokes at the next use of the other macros using
&WHOLE.
Because I haven't made use of &WHOLE yet, I'm not sure if the use of
&WHOLE is ok or Allegro CL has a bug. The ACL manual states in
appendix A that "Allegro CL conforms to the new specifications." and
from the description of CLtL2 it seems that Roger's code is
erroneous. Can anyone give a _correct_ example how to use &WHOLE
not appearing first in the lambda-list to test the behaviour of ACL
or any other Lisp implementation w.r.t. &WHOLE?
That's it so far. xindy is running using Clisp on Solaris 2/Sun 4,
but it isn't yet using ACL :-( ...will continue tomorrow.
Best wishes,
-bernd