chicken-users
[Top][All Lists]
Advanced

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

Re: [Chicken-users] Question about set-car! and set-cdr!


From: Daniel Carrera
Subject: Re: [Chicken-users] Question about set-car! and set-cdr!
Date: Thu, 6 Mar 2014 15:33:08 +0100


On 6 March 2014 14:37, "Jörg F. Wittenberger" <address@hidden> wrote:
Am 06.03.2014 09:05, schrieb Daniel Carrera:
I have recently learned about set-car! and set-cdr! which eventually led me to learn about how Racket removed them years ago for the reasons given in this post:

http://blog.racket-lang.org/2007/11/getting-rid-of-set-car-and-set-cdr.html


On the other hand, Chicken certainly has set-car! and set-cdr! and I also see these functions in R7RS. I was wondering if there is a balancing opinion (maybe a post somewhere) on this matter.

Frankly I find the above posting pretty balanced.  Most people agree that pure functional code is easier to judge and get right than code having mutation.

Presumably these functions exist because someone thought they were a good idea.

Still there is the history.  Hence Scheme has mutation.

Maybe this could be addressed by splitting the "scheme" module of chicken into a "scheme-pure" for the sake of safety, "scheme-mutations" having the rest and make "scheme" importing and reexporting both sets of bindings.

Yeah. I have to admit that I found the argument in the post persuasive. Racket's promise of safety is enticing. But I wondered if there was a reason why the rest of the Scheme world hasn't rushed to adopt this seemingly great idea. I suppose that it could be a matter of history, as you suggest. 

Cheers,
Daniel.
--
When an engineer says that something can't be done, it's a code phrase that means it's not fun to do.

reply via email to

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