chicken-users
[Top][All Lists]
Advanced

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

Re: (declare (pure ...))


From: Pietro Cerutti
Subject: Re: (declare (pure ...))
Date: Sat, 10 Feb 2024 12:44:38 +0000

L
On 10 Feb 2024, at 13:30, Peter Bex <peter@more-magic.net> wrote:

On Sat, Feb 10, 2024 at 12:24:36PM +0000, Pietro Cerutti wrote:
This is not how I reason about referential transparency. It is a property of functions applied to values, not variables.
The fact that you can define x to different values or even rebind it in the scope of a let binding doesn't make (lambda (x) (+ x 1)) less referentially transparent.
If you change the value of a slot of a vector, then the vector has a different value than before, even if the same name binds to the value.

This might be true in an abstract sense, but it isn't true for the
CHICKEN type system.  The same vector (e.g. eq? returns #t) is always
the same "value", for purposes of the type system.

It can have different values inside its slots, which is why we have
to differentiate between pure and clean functions (see my other mail).

Oh, I've missed it! I thought it was just some mismatch on the naming in scrutinizer, I had not noticed the different semantics. Thanks!

-- 
Pietro Cerutti
I've pledged to give 10% of income to effective charities and invite you to join me.
https://givingwhatwecan.org

Sent from a small device - please excuse brevity and typos.

reply via email to

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