[Metabang-bind-devel] metabang-bind/clisp breakage
Daniel Herring
dherring at tentpost.com
Thu Aug 27 06:51:44 UTC 2009
[also posted to comp.lang.lisp]
Metabang-bind used to work with clisp; but I can't get bind version 0.7.4
to work with clisp versions 2.47 or 2.48. Bind 0.7.4 does work for me
with current CCL, ECL, and SBCL. The offending change was apparently made
in a significant bind rewrite on 2009-03-01 with commit message "complete
refactoring and macroizing".
This problem was found in cl-markdown with forms like
(bind (((:struct markup- name inner outer encoding-method) markup))
(format stream "~a : ~a ~a ~a"
name outer inner encoding-method))
Clisp fails to macroexpand this, giving messages like
FUNCALL: undefined function #1=#:|binding-generator6558|
[Condition of type SYSTEM::SIMPLE-UNDEFINED-FUNCTION]
In fact, clisp appears to fail on all bind forms that were defined with
alternative values (such as :struct/:structure, :plist/:properties, ...).
Bind forms are described in bind/dev/bindings.lisp. They are defined
using the DEFBINDING-FORM macro (bind/dev/macros.lisp); it specializes the
generic function BIND-GENERATE-BINDINGS for each key. Bindings with a
single key are implemented directly in the specialization. Bindings with
multiple keys are given one specialization per key, each calling a shared
generic function named (gensym "binding-generator").
For some reason, clisp can't find the functions named by this gensym.
I've tried adding a defgeneric for it, changing from a generic function to
a plain function, and rearranging the code to define the function before
the B-G-B that calls it. Nothing seems to work.
Any ideas? I'm tempted to call this a clisp bug; but it is odd code.
Thanks,
Daniel
More information about the metabang-bind-devel
mailing list