chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] redefining cons,car,cdr in SICP


From: Alan Post
Subject: Re: [Chicken-users] redefining cons,car,cdr in SICP
Date: Fri, 3 Dec 2010 13:36:20 -0700

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 <address@hidden> 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]