zwr has quit [Read error: Connection reset by peer]
zwr has joined #commonlisp
pkal_ has joined #commonlisp
pkal has quit [Ping timeout: 248 seconds]
pkal_ is now known as pkal
Pixel_Outlaw has joined #commonlisp
<Pixel_Outlaw>
Ahoy all. Is it safe to mutate a quasi-quoted list? I know you're not supposed to for standard quoted list literals.
scymtym has quit [Read error: Connection reset by peer]
scymtym has joined #commonlisp
olnw has joined #commonlisp
kyoji has quit [Read error: Connection reset by peer]
random-nick has quit [Ping timeout: 265 seconds]
kyoji has joined #commonlisp
decweb has quit [Ping timeout: 260 seconds]
<bike>
Pixel_Outlaw: no, it is not safe.
foretspaisibles has quit [Remote host closed the connection]
<Pixel_Outlaw>
bike, Thanks.
<Pixel_Outlaw>
Really then you can say that spliced lists can't be used in the full capacity of lists made with the LIST function?
<Pixel_Outlaw>
Hmm, I wonder if I've made some bad macros in the past then.
foretspa1sibles has joined #commonlisp
akoana has quit [Quit: leaving]
decweb has joined #commonlisp
dostoevsky has quit [Quit: Leaving]
<White_Flame>
technically, mutating the 3rd+ elements of `(1 2 ,@(runtime-generated-things)) should be safe, just not anything in literally specified cells
<beach>
I don't see how the first and the second cell could be literally specified. The second cell must be created with its CDR generated at run time, and the first cell must have the second cell in its CDR.
decweb has quit [Ping timeout: 276 seconds]
<White_Flame>
oh, I guess that's true
<White_Flame>
basically any literal sublist would be off-limits to modification, while any concatenated non-tail portion of a list would be dynamically allocated
<White_Flame>
sublist = a full list value somewhere, not a span of a larger list
<aeth>
so the quoted list in this isn't literal? `(progn '(1 2 ,@(runtime-generated-things)))
<White_Flame>
(dyn dyn (lit lit) ,@(...) lit lit)
<White_Flame>
right
<White_Flame>
a list containing a dynamically generated list element would have to be copied/appended/etc
<White_Flame>
transitively
<White_Flame>
however, that's just the practice of the matter. the spec is probably more conservative
amb007 has quit [Ping timeout: 265 seconds]
<Pixel_Outlaw>
So ` makes kind of a mess then.
<White_Flame>
dynamic allocation is contagious within `
<White_Flame>
any fully literal list however should remain literal and not be mutated
<White_Flame>
unless used by ,@ ;)
<White_Flame>
in a non-tail position (1 2 ,@(3 4 5) 6)
<White_Flame>
so yeah, rules upon rules. Don't mutate anything ;)
amb007 has joined #commonlisp
<aeth>
this sort of thing is best done immutably, anyway
<Pixel_Outlaw>
Ok, that's fair.
<Pixel_Outlaw>
So, for example if I have a list of card faces like `(A K Q J 1 2 3 4 5 6 7 8 9 10) I should not use stuff like remove-if
<Pixel_Outlaw>
Sorry, delete-if
triffid has quit [Remote host closed the connection]
triffid has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
amb007 has joined #commonlisp
triffid has quit [Remote host closed the connection]
Pixel_Outlaw has quit [Remote host closed the connection]
pve has joined #commonlisp
gorignak has joined #commonlisp
triffid has joined #commonlisp
mishoo has joined #commonlisp
d4ryus has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
amb007 has joined #commonlisp
chomwitt has quit [Ping timeout: 272 seconds]
d4ryus has quit [Quit: WeeChat 4.2.2]
d4ryus has joined #commonlisp
d4ryus has quit [Client Quit]
d4ryus has joined #commonlisp
cmack` has joined #commonlisp
cmack has quit [Ping timeout: 260 seconds]
mgl has joined #commonlisp
Alfr is now known as Guest3795
Guest3795 has quit [Killed (zinc.libera.chat (Nickname regained by services))]