<beach>
Shouldn't there be an online Lisp meeting this week? I don't see an announcement.
mindCrime has quit [Ping timeout: 260 seconds]
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life_ is now known as Lord_of_Life
torbo has quit [Remote host closed the connection]
anewuser has joined #lisp
pfr has joined #lisp
cjb has quit [Ping timeout: 252 seconds]
pfr has quit [Ping timeout: 240 seconds]
cjb has joined #lisp
nicktick1 has quit [Ping timeout: 240 seconds]
nicktick has joined #lisp
pfr has joined #lisp
gravicappa has joined #lisp
vutral has quit [Quit: Connection closed for inactivity]
ldb has quit [Quit: Ping timeout (120 seconds)]
ldb has joined #lisp
cosimone has joined #lisp
duuqnd has joined #lisp
pfr has quit [Ping timeout: 240 seconds]
pfr has joined #lisp
stoneglass has joined #lisp
marusich has quit [Ping timeout: 244 seconds]
pfr has quit [Ping timeout: 246 seconds]
pfr has joined #lisp
jonatack has quit [Ping timeout: 272 seconds]
heisig has joined #lisp
terpri__ is now known as terpri
jonatack has joined #lisp
<phoe>
no content, no meeting
<phoe>
no meeting, no announcement
<beach>
phoe: no-defun-allowed has prepared a talk.
<beach>
It is ready to go.
<phoe>
!
<phoe>
so it is ready
<beach>
yes.
<shka_>
ready let's go
<beach>
phoe: Feel free to discuss it with no-defun-allowed in #sicl.
<phoe>
I'll do that, thanks
nicktick has quit [Ping timeout: 264 seconds]
cjb has quit [Quit: end of day]
jbgg_ has quit [Ping timeout: 246 seconds]
lonjil has quit [Ping timeout: 256 seconds]
jonatack has quit [Ping timeout: 264 seconds]
enrio has joined #lisp
jonatack has joined #lisp
pfr has quit [Ping timeout: 240 seconds]
johnjay has quit [Read error: Connection reset by peer]
johnjay has joined #lisp
rogersm has joined #lisp
pve has joined #lisp
pi123 has joined #lisp
iamFIREcracker has joined #lisp
johnjay has quit [Ping timeout: 260 seconds]
ldb has quit [Quit: ldb]
Necktwi has quit [Ping timeout: 240 seconds]
Necktwi has joined #lisp
ech has quit [Quit: leaving]
pi123 has quit [Read error: Connection reset by peer]
johnjay has joined #lisp
ech has joined #lisp
Cymew has joined #lisp
ech has quit [Quit: leaving]
whiteline has joined #lisp
hendursaga has quit [Remote host closed the connection]
hendursaga has joined #lisp
orivej has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
nicktick has joined #lisp
unl0ckd has quit [Quit: Idle for 30+ days]
jonatack has quit [Ping timeout: 256 seconds]
tfb has quit [Read error: Connection reset by peer]
jerme_ has quit [Read error: Connection reset by peer]
buoy49 has quit [Read error: Connection reset by peer]
lispyone_ has quit [Read error: Connection reset by peer]
banjiewen has quit [Read error: Connection reset by peer]
kilimanjaro has quit [Read error: Connection reset by peer]
asedeno has quit [Read error: Connection reset by peer]
buoy49 has joined #lisp
asedeno has joined #lisp
jerme_ has joined #lisp
banjiewen has joined #lisp
kilimanjaro has joined #lisp
wxie has joined #lisp
ljavorsk has joined #lisp
tfb has joined #lisp
lispyone_ has joined #lisp
cosimone has quit [Remote host closed the connection]
ralt has joined #lisp
yitzi has quit [Quit: yitzi]
jonatack has joined #lisp
yitzi has joined #lisp
duuqnd has quit [Remote host closed the connection]
duuqnd has joined #lisp
nicktick has quit [Ping timeout: 265 seconds]
space_otter has quit [Remote host closed the connection]
enrioog has joined #lisp
orivej has joined #lisp
enrio has quit [Ping timeout: 240 seconds]
VincentVega has joined #lisp
<VincentVega>
hi all! in defmacro, it it ok to destructively modify the arguments?
<beach>
Why would you want to do that?
<beach>
You would be modifying code. That sounds like a bad idea.
<VincentVega>
Asking out of curiosity mostly
<ralt>
everything is possible. Whether you should in this case is most likely a "no".
<VincentVega>
And an occasional (setq body (cdr body)) is helpful but I guess that's not destructive modification
<beach>
Correct, it isn't.
<VincentVega>
Ok, yeah, I see
<beach>
But that's also a bad idea. If you trace the macro some day, it is good to have the arguments intact.
<VincentVega>
Oh, ok. Yeah, better avoid it then. Tnx!
<beach>
Since macros are executed at compile time, you don't need to worry so much about performance. It is best to write macros in a functional style.
<ralt>
recursive macros are best macros
<VincentVega>
beach: Yeah, makes sense
<VincentVega>
ralt: I did find a use for a recursive macro once, it felt pretty good
<ralt>
hehe
<ralt>
I found a use for macrolet over the weekend, that was pretty nice too!
<VincentVega>
yeah!
anewuser has quit [Quit: Leaving]
<phoe>
VincentVega: mutating macro arguments is invalid
<phoe>
because it's undefined.
<beach>
phoe: Where is that written?
<jackdaniel>
a good example of a recursive macro is implementing (with-open-fileS bindings &body body)
jbgg has joined #lisp
<ralt>
handler-bind* is the one I did last time
<ralt>
where the first form will be able to catch errors of the second form
<phoe>
beach: one second
<phoe>
beach: " The consequences are undefined if a macro function destructively modifies any part of its form argument."
<phoe>
oh, you are mutating the variable bindings only, not the actual macro forms
<phoe>
I guess that is okay-but-eh for reasons that beach mentioned; tracing the macro or inspecting the stack is going to be painful
stepnem has quit [Ping timeout: 240 seconds]
<beach>
phoe: Thanks!
stepnem has joined #lisp
hendursaga has quit [Remote host closed the connection]
<phoe>
e.g. SBCL will choke on it if you attempt to do that, and AFAIK some SBCL commit actually tried to issue warnings if it detected immutable data being mutated
<phoe>
don't know if it made it into an official release though
jonatack has quit [Read error: Connection reset by peer]
hendursaga has joined #lisp
<VincentVega>
Yeah, I better simply stick with functional style then.
kaftejiman has joined #lisp
wxie has quit [Ping timeout: 246 seconds]
pfr has joined #lisp
enrioog has quit [Ping timeout: 264 seconds]
gxt has joined #lisp
bitmapper has quit [Ping timeout: 264 seconds]
random-nick has joined #lisp
yitzi has quit [Quit: yitzi]
yitzi has joined #lisp
yitzi has quit [Quit: yitzi]
wxie has joined #lisp
Bourne has joined #lisp
paul0 has joined #lisp
kaftejiman has quit [Remote host closed the connection]
jonatack has joined #lisp
rogersm has quit [Quit: Leaving...]
Necktwi has quit [Ping timeout: 256 seconds]
Necktwi has joined #lisp
jesse1010 has joined #lisp
ebrasca has joined #lisp
orivej has joined #lisp
lonjil has joined #lisp
Necktwi has quit [Ping timeout: 246 seconds]
ggole has joined #lisp
dmrintr has joined #lisp
Bike has joined #lisp
wxie has quit [Ping timeout: 246 seconds]
okflo has joined #lisp
Necktwi has joined #lisp
DGASAU` has quit [Quit: ERC (IRC client for Emacs 25.3.1)]
DGASAU has joined #lisp
<p_l>
phoe: at safety 0 SBCL used to not mention anything about mutating immutable data
* p_l
recalls that very absurd debug session
elflng has quit [Read error: No route to host]
elflng has joined #lisp
__jrjsmrtn__ has joined #lisp
drot has quit [Read error: Connection reset by peer]
_jrjsmrtn has quit [Ping timeout: 246 seconds]
shinohai has quit [Read error: Connection reset by peer]
okflo has quit [Remote host closed the connection]
puchacz has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
<puchacz>
trying out sly.... by default autocomplete works in REPL only, not in file bufffers. I added (define-key sly-editing-mode-map (kbd "<tab>") 'sly-mrepl-indent-and-complete-symbol) so I have autocomplete in file buffers as well, but something is not fully right
<puchacz>
in REPL, I can select current autocomplete by either hitting Tab again, or Enter. in *.lisp files, only Enter works and sometimes a strange font face (greenish background) is left over where autocomplete worked.
heisig has quit [Ping timeout: 240 seconds]
vultyre has joined #lisp
vultyre has quit [Remote host closed the connection]
dvarkin has joined #lisp
dvarkin has quit [Quit: ChatZilla 0.9.93 [SeaMonkey 2.49.4/20190518164806]]
wsinatra has joined #lisp
ljavorsk has quit [Ping timeout: 256 seconds]
dyelar has joined #lisp
dominic34 has joined #lisp
dominic34 has quit [Excess Flood]
dominic34 has joined #lisp
yitzi has joined #lisp
galex-713_ has quit [Ping timeout: 272 seconds]
rpg has joined #lisp
orivej has joined #lisp
shifty has quit [Ping timeout: 246 seconds]
stoneglass has quit [Quit: stoneglass]
sjl_ has joined #lisp
EvW has joined #lisp
ebrasca has quit [Remote host closed the connection]
ebrasca has joined #lisp
bsd4me has joined #lisp
elosant has joined #lisp
VincentVega has quit [Remote host closed the connection]
rilez has quit [Remote host closed the connection]
<VincentVega>
phoe: Well, if alist contains :m, I want to have it, but if not, I still want a match for :s.
countvaj` has joined #lisp
countvajhula has quit [Remote host closed the connection]
<VincentVega>
By the way, the larger thing I am doing here is trying to match nested alists to a tree structure (and do the appropriate bindings), so trivia looks interesting in this respect, but some branches of this tree are optional.
eta has quit [Remote host closed the connection]
eta has joined #lisp
<phoe>
this still sounds like a double match for me
<phoe>
like, a pair of trivia:match calls
dilated_dinosaur has quit [Ping timeout: 240 seconds]
<VincentVega>
Yeah, you are probably right, I should just go with that and see how it all looks...
gaqwas has joined #lisp
gaqwas has joined #lisp
pve has quit [Quit: leaving]
galex-713 has quit [Ping timeout: 272 seconds]
orivej has joined #lisp
VincentVega has quit [Remote host closed the connection]
galex-713 has joined #lisp
dilated_dinosaur has joined #lisp
dominic34 has quit [Ping timeout: 246 seconds]
torbo has joined #lisp
<_death>
dunno why you think it's a "double match".. (trivia:match '(:arp (:s ddy) (:m 123)) ((list* :arp (or (and (assoc :m m) (assoc :s s)) (or (assoc :m m) (assoc :s s)))) (list s m))) seems to work, though using a 3-ary OR gives an error, which I guess is a trivia bug.. I guess you could modify trivia to accept a default value for assoc or to have another operator instead of OR that doesn't short-circuit
<phoe>
oh, or branching it like that should work
<_death>
optima seems to work with a single OR
<_death>
well, not exactly.. it would error if only one entry exists.. so two ORs
gaqwas has quit [Ping timeout: 264 seconds]
sjl_ has quit [Ping timeout: 240 seconds]
nicktick has joined #lisp
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
vutral has joined #lisp
kaftejiman has quit [Remote host closed the connection]
phillbush has joined #lisp
<phillbush>
Hello, how can I include a library in racket?