X-Git-Url: http://christophe.rhodes.io/gitweb/?p=specializable.git;a=blobdiff_plain;f=cons-specializer.lisp;h=c0ec716a3d51f8c0aeb82aab703836d3aaeffce9;hp=0c834f20958bd1f8af5899bb924b0d7c6b79dfd7;hb=f06d688ce6a5d48a10990838efe63e69ae6a7db6;hpb=0e588c71c0bbb390d0ff8a6227df896fad4bb025 diff --git a/cons-specializer.lisp b/cons-specializer.lisp index 0c834f2..c0ec716 100644 --- a/cons-specializer.lisp +++ b/cons-specializer.lisp @@ -67,4 +67,10 @@ (cadr form)) (defmethod walk ((form (cons let))) (let ((bindings (cadr form))) - `(with-bindings ,bindings ,@(cddr form)))))) + `(with-bindings ,bindings ,@(mapcar #'walk (cddr form))))) + + (assert (equal (walk t) '(lookup t))) + (assert (equal (walk nil) '(lookup nil))) + (assert (equal (walk '(foo bar)) '(call (flookup foo) (list (lookup bar))))) + (assert (equal (walk '(quote bar)) 'bar)) + (assert (equal (walk '(let foo bar)) '(with-bindings foo (lookup bar))))))