On Fri, Dec 03, 2010 at 09:03:15PM +0100, Jörg F. Wittenberger wrote: > Am Freitag, den 03.12.2010, 12:57 -0500 schrieb Hans Nowak: > > On Fri, Dec 3, 2010 at 12:33, David Steiner <[email protected]> > > wrote: > > > i'm reading SICP and practicing in chicken. in the book they redefine > > > cons, car and cdr using procedures: > > > > > > (define (cons x y) > > > (define (dispatch m) > > > (cond ((= m 0) x) > > > ((= m 1) y) > > > (else (error "Argument not 0 or 1 -- CONS" m)))) > > > dispatch) > > > (define (car z) (z 0)) > > > (define (cdr z) (z 1)) > > > > > > however it produces an error in chicken: > > > Error: (caar) bad argument type: #<procedure (dispatch m)> > > > > > > why doesn't it work? > > This is clearly a bug! >
Is there a rule in R5RS that says cond can't be defined using cons? I would expect one result of this code would be redefining cons, which then gets used by cond, which then calls iteslf again... Restated, I'm not clear on whether "clearly a bug" applies in this case. -Alan -- .i ko djuno fi le do sevzi _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
