[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] New function array-mutable?
From: |
Maxime Devos |
Subject: |
Re: [PATCH] New function array-mutable? |
Date: |
Thu, 09 Dec 2021 20:34:00 +0000 |
User-agent: |
Evolution 3.38.3-1 |
Hi,
lloda schreef op do 25-11-2021 om 20:08 [+0100]:
I think literal arrays are always immutable, and one could base the
test on that.
>
Is such a function useful in some other context? If one has an array which is
already immutable, it can be referenced freely and copying it seems
unnecessary. If one has a mutable array, is there any reason why one would want
to make an immutable copy?
To avoid accidental mutation (though at the cost of making a copy).
Also, literals aren't necessarily immutable if 'eval' is used:
(let ((literal (make-array 0 1 1))) (eval `(array-set! ',literal #xff 0 0)
(current-module)) literal)
;; output: #2((255))
As-is, this is a somewhat contrived example. But 'eval' is useful REPL-like
things,
and if someone implements a REPL-like thing, they might want to ‘immutabilise’
all input first such that array-set! on literals will actually produce an
exception
as one would expect.
An alternative method would be to compile the code before running
(which is what the standard REPL does IIUC), but _requiring_ this extra step
seems
suboptimal to me.
Greetings,
Maxime.
p.s. Somehow, your e-mail ended up in spam, for no apparent reason.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH] New function array-mutable?,
Maxime Devos <=