Am Freitag, den 03.12.2010, 13:36 -0700 schrieb Alan Post: > 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?
Hygiene? > I would expect one result of this code would be redefining cons, > which then gets used by cond, which then calls iteslf again... This is what's probably going on, though it better would not. /Jerry _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
