[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