rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
lacroixboy_ has joined #lisp
Bike has joined #lisp
orivej has joined #lisp
lacroixboy has quit [Ping timeout: 240 seconds]
Kundry_W_ has quit [Ping timeout: 256 seconds]
milanj has joined #lisp
Oladon has joined #lisp
lonjil has joined #lisp
dev has joined #lisp
slyrus__ has joined #lisp
slyrus_ has quit [Ping timeout: 246 seconds]
holycow has quit [Quit: leaving]
orivej has quit [Ping timeout: 256 seconds]
oxum has joined #lisp
Kundry_Wag has joined #lisp
dyelar has quit [Quit: Leaving.]
davepdotorg has joined #lisp
orivej has joined #lisp
davepdotorg has quit [Ping timeout: 260 seconds]
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
EvW has quit [Ping timeout: 260 seconds]
rgherdt has joined #lisp
ArthurStrong has joined #lisp
loli has quit [Ping timeout: 246 seconds]
dddddd has quit [Remote host closed the connection]
renzhi_ has joined #lisp
patlv has quit [Quit: patlv]
buffergn0me has joined #lisp
rgherdt has quit [Ping timeout: 272 seconds]
loli has joined #lisp
terpri has joined #lisp
Kaisyu7 has quit [Quit: ERC (IRC client for Emacs 26.3)]
crazybigdan has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
Kaisyu7 has joined #lisp
bitmapper has quit [Ping timeout: 260 seconds]
davsebamse has quit [Ping timeout: 272 seconds]
<White_Flame>
are whitespace, constituents, traits etc first class in any measurable way?
zaquest has quit [Quit: Leaving]
rand_t has quit [Quit: rand_t]
davsebamse has joined #lisp
zaquest has joined #lisp
<Bike>
you can set the syntax type of a character from another, but otherwise no
<crazybigdan>
Hi, when using slime, if I have some file and in it a define some package "foo" and export some function inside that package, I can compile and run it and all is well
<crazybigdan>
When I change the export list in the defpackage and recompile, I get an error along the lines of: "FOO also exports the following symbols: (foo:fun-i-removed-from-export)
<crazybigdan>
How do I get around this and recompile the modified defpackage?
<crazybigdan>
it says it is a warning but slime will fail to load the fasl
<crazybigdan>
I can direct it to anyways
<Bike>
it's not a slime specific problem. doing a modified defpackage is undefined behavior according to the standard
<crazybigdan>
a workaround I found was to change into that offending package (via in-package) and then (unintern) the symbol
<crazybigdan>
that would allow me to recompile without warnings
<Bike>
yeah, the problem is when the defpackage doesn't match the state of the package
<crazybigdan>
but I was wondering if there was a more efficient way to doing it
<crazybigdan>
okay
<Bike>
if you unintern the symbol, it's not exported any more, so there's no problem
<crazybigdan>
i thought i could unintern from outside the package, but that did not appear to work
<Bike>
you can do (unintern 'foo::sym "FOO")
<Bike>
regardless of what package you're in
hu6ub has quit [Ping timeout: 260 seconds]
<Bike>
can probably also just use unexport
<White_Flame>
crazybigdan: My coding style is to have exports by the DEFUNs, which seems to be in the minority. With defpackage loading first in a separate package.lisp, it's not an issue since that is rarely re-loaded. When it is an issue, I simply restart the lisp image to flush things out
oxum has joined #lisp
<White_Flame>
it is a very good idea to restart during code modifications (renames, deletions, API changes, initializers, etc) to clean out any lingering prior code and to make sure your code is purely reflected in the running image
<crazybigdan>
do you have an example on github or elsewhere?
<White_Flame>
I just have a simple (defmacro defun-export (name params &body) `(progn (export ',name) (defun ,name ,params ,@body))) and use that instead of defun where appropriate
<White_Flame>
obviously that won't remove the export if you rename to plain DEFUN, and DEFPACKAGE isn't happy having an empty export list if reloaded, etc
<White_Flame>
but my main point is to say that restarting the image is something good to do when structural changes happen to your code
<White_Flame>
then it doesn't matter what the old package definition is
<crazybigdan>
Bike, that usage of unintern worked for me, I was calling it like (unintern 'sym "FOO")
<crazybigdan>
so thank you
<Bike>
yeah, if you just write 'sym it'll be the sym in the current package, but with foo:: it's expliit
<crazybigdan>
so while i have you all here, what is the difference between 'sym and :sym?
<White_Flame>
current package vs keyword package
<Bike>
:sym is short for keyword:sym
<White_Flame>
and keywords always evaluate to their own symbol as a data value, so no need to quote it
<White_Flame>
so :sym is equivalent to ':sym
<crazybigdan>
is there only one keyword package?
<White_Flame>
yes
<White_Flame>
it's intended to be used as a global space for symbols as data tags
<crazybigdan>
and if the reader is looking up a sym, so there some order it will look between the current package and the keyword package?
<White_Flame>
so there's no local bindings on them
<White_Flame>
(well in a few cases there are, but whatever)
Oladon has quit [Quit: Leaving.]
<White_Flame>
the keyword package probably should never be USEd, nor symbols exported from there
<White_Flame>
keywords again are for symbols-as-data-elements, where other languages might used enums (ignoring the backing numbers)
<White_Flame>
and a keyword will read the same no matter what package you're in, and 2 keywords of the same name will always be EQ
<crazybigdan>
i have seen loop take two forms, one with symbols and one with keyword symbols: (loop :for i :in thing) vs (loop for i in thing)
<Bike>
loop only uses the symbol names, so those are equivalent
<White_Flame>
yep, that is loop-specific behavior. Loop is a weird little sublanguage
<White_Flame>
which was integrated from past utilities
<crazybigdan>
is there a "more correct" way to call loop?
<White_Flame>
LOOP is a very general tool, and an easy go-to for many usages
turona has quit [Ping timeout: 265 seconds]
<White_Flame>
there's an ITERATE library which is a more unified style re-take on the same sort of thing
<White_Flame>
then there is DOLIST and generic DO and their related looping forms
<crazybigdan>
sure, I mean, using symbols vs using keyword-symbols
<White_Flame>
oh, you mean which of those is considered "more correct"
<crazybigdan>
yeah
<White_Flame>
I've seen plain symbols more than keyworded ones, but I don't think there's broad consensus
<crazybigdan>
i would've guessed
<White_Flame>
keywords will highlight better in emacs, and creates fewer arbitrary symbols at read-time (but that's pretty minor)
turona has joined #lisp
<crazybigdan>
haha syntactical highlight is anything but minor :-)
<White_Flame>
I mean the symbol creation is a very minor static overhead
<crazybigdan>
by symbol creation you mean 'intern'ing?
<White_Flame>
yes
<White_Flame>
reading the input stream of characters "(loop for foo in bar " and generating the local-package symbols named FOR, FOO, IN and BAR
<crazybigdan>
okay
<White_Flame>
although really just FOR and IN would be superfluous; the other ones are genuine local variables
<White_Flame>
LOOP of course would be imported from COMMON-LISP:LOOP
<crazybigdan>
so after you call loop (like: (loop for i in foobar)) you could theoretically unintern the 'for and the 'in to clean up the package?
<White_Flame>
right, to save probably some dozens of bytes in your at least dozens of MB footprint
<White_Flame>
however, those might also exist in use elswhere in your code, so definitely not recommended
arpunk has joined #lisp
<aeth>
I like using CL keywords for LOOP keywords because they stand out more, with or without syntax highlighting.
<aeth>
The only downside is the rare case (just for hash-tables?) where LOOP strings together several words in a row
<aeth>
that part just looks ugly
<aeth>
Even though it looks cleaner to me, it is the minority style. Maybe because the big references like PCL don't use this style.
<White_Flame>
it's a newer style, at the very least
oxum has quit [Remote host closed the connection]
<aeth>
It probably became a thing when syntax highlighting became a thing. GNU Emacs (not sure about XEmacs) got syntax highlighting by default fairly late. Early 2010s iirc.
<aeth>
It really shines in two cases: (1) with syntax highlighting and (2) when writing a LOOP in one line for something like IRC when it would normally be on more than one line
Kundry_Wag has quit [Read error: Connection reset by peer]
<ArthurStrong>
beach: you like a stranger you meet each time in subway in morning. what TZ you're in?
<beach>
UTC+2
CrazyEddy has joined #lisp
<ArthurStrong>
beach: me too
<beach>
If you made a habit of going to ELS, I wouldn't be a stranger to you.
<beach>
Though, who knows, maybe the idea of a bunch of people traveling in order to be at the same place at the same time to discuss a common topic is over.
ahungry has quit [Remote host closed the connection]
dale has quit [Quit: My computer has gone to sleep]
lavaflow has joined #lisp
beach has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
shka_ has joined #lisp
beach has joined #lisp
sdumi has quit [Ping timeout: 246 seconds]
sdumi has joined #lisp
slyrus_ has joined #lisp
slyrus__ has quit [Ping timeout: 246 seconds]
Cymew has joined #lisp
varjag has joined #lisp
ramHero has quit [Ping timeout: 265 seconds]
sdumi has quit [Ping timeout: 240 seconds]
SGASAU has quit [Ping timeout: 256 seconds]
<phoe>
hellooo
random-nick has joined #lisp
davepdotorg has joined #lisp
<no-defun-allowed>
Hello phoe.
gigetoo has quit [Ping timeout: 246 seconds]
gigetoo has joined #lisp
ayuce has joined #lisp
pjb has quit [Ping timeout: 272 seconds]
gigetoo has quit [Ping timeout: 260 seconds]
yankM has quit [Ping timeout: 264 seconds]
gigetoo has joined #lisp
<beach>
Hello phoe.
<phoe>
good morning
rogersm has joined #lisp
gigetoo has quit [Ping timeout: 260 seconds]
gigetoo has joined #lisp
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
liberliver has joined #lisp
karlosz has quit [Quit: karlosz]
milanj has joined #lisp
asarch has joined #lisp
<asarch>
One stupid question: in Perl when you are debugging some module, you can add a return; at the middle of that module in order to prevent the interpreter reads the entire file. Is there any similar for Common Lisp?
<no-defun-allowed>
You could put #| before the first line you don't want to read, and |# after the last line.
<aeth>
what comes to mind is just inserting #| ... |# but there might be another way. perhaps a reader macro that essentially does nothing
<ralt>
like #+nil
<no-defun-allowed>
ralt: #+(or) would only work for one form though
<aeth>
well, I was more thinking about a reader macro that reads until EOF
pve has joined #lisp
<p_l>
beach: while I am generally pro-teleconference, I would prefer if events like ELS continued to be in-person
<p_l>
much harder to do hallway track otherwise
<beach>
p_l: I prefer that too, but the combination of pandemics and energy crises may force us to rethink.
amerlyq has joined #lisp
jprajzne has joined #lisp
toorevitimirp has quit [Ping timeout: 272 seconds]
<aeth>
maybe when VR/AR is common
<shka_>
eh, i just hope that future ELS events, even when returning to on-side formula will still be streamed
gigetoo has quit [Ping timeout: 256 seconds]
gigetoo has joined #lisp
davepdotorg has quit [Ping timeout: 244 seconds]
ArthurStrong has quit [Quit: leaving]
rgherdt has joined #lisp
Kundry_Wag has joined #lisp
SGASAU has joined #lisp
Kundry_Wag has quit [Ping timeout: 258 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
gigetoo has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
gigetoo has joined #lisp
dalz has joined #lisp
<Shinmera>
I'd like that too but I fear it might impact funds negatively.
<Shinmera>
It would also put a big additional burden on organisers.
<Shinmera>
Lord knows a stream like that is difficult enough with pre-recorded stuff. Doing it live requires a ton of effort and knowledge that most people don't even realise.
heisig has joined #lisp
ljavorsk has joined #lisp
<White_Flame>
do it all in 144p
<Shinmera>
Unfortunately effort does not scale with the resolution
<asarch>
Thank you guys!
<asarch>
Thank you very much! :-)
asarch has quit [Quit: Leaving]
Zakkor has joined #lisp
femi has quit [Ping timeout: 272 seconds]
_heisig has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
orivej_ has joined #lisp
heisig has quit [Read error: Connection reset by peer]
SGASAU` has joined #lisp
Krystof has quit [Ping timeout: 256 seconds]
SGASAU has quit [Ping timeout: 256 seconds]
jeosol has joined #lisp
Krystof has joined #lisp
liberliver has quit [Quit: liberliver]
liberliver has joined #lisp
rwcom34174916 has joined #lisp
_heisig is now known as heisig
<p_l>
Shinmera: have you done it? Cause I feel lulled into pseudo safety by OBS and YT
rwcom3417491 has quit [Ping timeout: 256 seconds]
<phoe>
p_l: OBS and YT have few moving parts
<phoe>
no mics, no cameras, the ability to postprocess audio/video, the ability to have take twos/threes/fours
<p_l>
phoe: OBS supports those, afaik
<phoe>
it's not about support
<p_l>
well, except multiple takes
<p_l>
but you don't do multiple takes with *live* streaming
davepdotorg has joined #lisp
<phoe>
it's about all the need to adjust their parameters at live time to make the streamed contents bearable
<phoe>
one needs a camera operator, an audio mixer operator, and someone watching over the stream; that's already three people
<p_l>
phoe: that's true, though I'll admit to cheating on that last time I tried ;P
rwcom34174916 has quit [Ping timeout: 272 seconds]
<phoe>
p_l: cheating at such matters is amazing as long as you don't get caught
<phoe>
and "getting caught" in this case means "you are streaming content that is unusable"
<phoe>
and that is a direct issue when it comes to watching livestreamed content
<Shinmera>
phoe: Done what? I did this year's stream. And I know a bit about how live events like ESA and GDQ operate. There's a ton of specialists on scene.
<Shinmera>
*p_l
<p_l>
Shinmera: I think there's a bit of scale between small end and ESA/GDQ
<Shinmera>
Of course
<p_l>
phoe: one simplification with ELS is that I don't recall there being more than one track
<Shinmera>
But even given such large events have technical issues every time with large funding and large teams on scene.
<p_l>
Shinmera: they have also significantly higher difficulty from the start
<p_l>
sometimes the fixes are hilarious though
<no-defun-allowed>
"Oh, but my ELS talk is about using artificial intelligence to automatically manage cameras and audio mixing..."
<phoe>
p_l: also the stream, once it reaches Twitch, doesn't care about how people watch it; that's the part that doesn't care about the scale
<p_l>
there's a mandatory manekineko in every CCC video, iirc
<p_l>
this fixed a big issue they used to have in handling streaming
<Shinmera>
p_l: Anyway, it's a fact that it would add a lot of additional requirements onto the local organisers. Every local chair I've talked to so far was completely exhausted after ELS even without having to worry about cameras, streaming, and moderating an online event at the same time.
<p_l>
Shinmera: Yes, I think that's the biggest issue, not technical
<Shinmera>
Well organising the cameras, video capture, and streaming /are/ technical issues that are a lot more trouble than 'just use obs lol'
<p_l>
Personally been thinking of maybe volunteering regarding handling that at any future /local/ ELS, but it didn't work out
<phoe>
;;; and mics
<phoe>
;;; and the mixer
<p_l>
Shinmera: I was thinking more of "individual technical bits can be handled this way, but you need time and people to arrange everything"
<ioa>
p_l it was difficult to separate the ELS talks in tracks, given the time restrictions of some speakers (US timezones)
ntqz has quit [Ping timeout: 256 seconds]
sdumi has joined #lisp
ntqz has joined #lisp
shka_ has quit [Ping timeout: 264 seconds]
<White_Flame>
Are the ELS talks available in a video-per-talk form yet? (and yeah, more work etc)
pjb has joined #lisp
<Shinmera>
Not that I know.
<Shinmera>
I've been too stressed since ELS to even handle the hand-off of the stream account to Didier.
<White_Flame>
yeah, I bet
sdumi has quit [Ping timeout: 240 seconds]
<Shinmera>
Twitch also has the capability to add 'chapters' but in the hurry of ELS I forgot about it.
dddddd has joined #lisp
<Shinmera>
I don't think I can add those after the fact.
<srandon111>
guys does lisp have Tail Call Optimization?
<Shinmera>
It might.
<srandon111>
???
<Shinmera>
It's up to the implementation.
<jackdaniel>
it is not mandated by the standard
<srandon111>
okok
<srandon111>
i mean sbcl
<srandon111>
common lisp
<jackdaniel>
you mean sbcl or common lisp?
<Shinmera>
SBCL will do it in some cases with some flag configurations.
<Shinmera>
Check the manual.
femi has joined #lisp
<srandon111>
Shinmera, isn't sbcl a common lisp?
<White_Flame>
but in general, yeah. Just use tail calls. If it blows the stack, check the implementation docs to see if you need to do anything special
<jackdaniel>
yes, but common lisp is not sbcl
<jackdaniel>
you know, "A contains B" et cetera
<White_Flame>
from a clean restart, (disassemble (lambda () (foo))) shows a tail call
<White_Flame>
(in <1 month old sbcl , to be specific)
<White_Flame>
(on x64)
<no-defun-allowed>
It isn't advisable to write tail-recursive functions in Common Lisp.
<White_Flame>
I think that's relatively outdated advice
<jackdaniel>
code compiled with tco may be harder to debug
<no-defun-allowed>
In the sense that a conforming implementation could not support tail call elimination?
<White_Flame>
the things that foil a tail call nowadays are generally things that will foil TCO in any TCO-supporting language
<phoe>
White_Flame: TCO in Lisp can be foiled by global optimize settings
<White_Flame>
sure
<phoe>
that won't foil TCO in many TCO-supporting languages, such as Erlang, Scheme et al
<White_Flame>
and if you have an infinite tail call recursive main loop or something, you can declare it happen there
<White_Flame>
but still, it works until you do something to break it, and TCO is a powerful programming tool supporting in any modern CL implementation. Use it.
gigetoo has quit [Ping timeout: 272 seconds]
<White_Flame>
*supported
<phoe>
sb-ext:restrict-compiler-policy may cause the compiler to ignore local optimize declarations; that's a problem
<White_Flame>
sure, "until you do something to break it", and in that example you know already what you're doing
<jackdaniel>
sb-ext:lift-compiler-policy
<jackdaniel>
;)
<beach>
srandon111: Often, algorithms that can be expressed with tail recursion are better expressed with iteration.
<phoe>
jackdaniel: you scared me for a second
<jackdaniel>
common lisp provides a wonderful iterative operator which syntactically resembles a tail-recursive function, it is called DO
<jackdaniel>
(DO ((arg initial-value call-step)*) (exit-test return-value) function-body)
<phoe>
jackdaniel: I haven't made that connection earlier! nice
<SAL9000>
I guess you'd want TCO for CPS, although I'm not sure if any CLs can optimize that
<White_Flame>
I've never considered that a reasonable resemblance ;)
<White_Flame>
SAL9000: I use it all the time. My compiler target is currently CPS CL lambdas
<jackdaniel>
White_Flame: well, it is striking to me :)
<SAL9000>
:-)
<phoe>
annnnnd strrrrike you're out
<jackdaniel>
but do is for recursive function, not for general tco where functions "pass the baton"
<jackdaniel>
s/do is/only for/
<Odin->
It's for where some languages use recursion to implement iteration. :p
<White_Flame>
I often turn to LABELS where loops get hairy, and the disassembler tends to just turn into a bunch of JMPs
<White_Flame>
*diassembled form
<White_Flame>
mutually recursive or self recursive
<White_Flame>
don't shortchange SBCL's compiler
<Odin->
White_Flame: We're talking about Common Lisp, not SBCL.
<White_Flame>
the original question was about SBCL specifically
<Odin->
Well, no, it wasn't. But it turned out that was all the asker cared about.
<phoe>
well if you want a SBCL-only solution then you can enable TCO in your programs, just follow the optimization guidelines
<White_Flame>
"enable"?
<White_Flame>
it's on by default
sdumi has joined #lisp
<phoe>
even better!
Lord_of_Life_ has joined #lisp
gigetoo has joined #lisp
Lord_of_Life has quit [Ping timeout: 260 seconds]
Lord_of_Life_ is now known as Lord_of_Life
liberliver has quit [Ping timeout: 240 seconds]
liberliver has joined #lisp
oxum has quit [Remote host closed the connection]
davepdotorg has quit [Remote host closed the connection]
pjb has quit [Ping timeout: 260 seconds]
jprajzne has quit [Quit: jprajzne]
liberliver has quit [Ping timeout: 256 seconds]
liberliver has joined #lisp
milanj has quit [Quit: This computer has gone to sleep]
orivej has joined #lisp
orivej_ has quit [Ping timeout: 272 seconds]
femi has quit [Ping timeout: 256 seconds]
liberliver has quit [Ping timeout: 256 seconds]
liberliver has joined #lisp
davepdotorg has joined #lisp
Kundry_Wag has joined #lisp
femi has joined #lisp
davepdotorg has quit [Remote host closed the connection]
davepdotorg has joined #lisp
Kundry_Wag has quit [Ping timeout: 256 seconds]
liberliver has quit [Ping timeout: 240 seconds]
liberliver has joined #lisp
davepdot_ has joined #lisp
jprajzne has joined #lisp
davepdotorg has quit [Ping timeout: 264 seconds]
SGASAU` has quit [Remote host closed the connection]
SGASAU` has joined #lisp
mangul has joined #lisp
liberliver has quit [Ping timeout: 260 seconds]
liberliver has joined #lisp
shangul has quit [Ping timeout: 260 seconds]
pjb has joined #lisp
SGASAU` has quit [Remote host closed the connection]
dalz has quit [Remote host closed the connection]
SGASAU` has joined #lisp
ravndal has quit [Ping timeout: 246 seconds]
Kundry_Wag has joined #lisp
oxum has joined #lisp
Lycurgus has joined #lisp
liberliver has quit [Ping timeout: 260 seconds]
liberliver has joined #lisp
Kundry_Wag has quit [Ping timeout: 264 seconds]
lavaflow has quit [Ping timeout: 272 seconds]
sdumi has quit [Read error: Connection reset by peer]
sdumi has joined #lisp
liberliver has quit [Ping timeout: 256 seconds]
liberliver has joined #lisp
lavaflow has joined #lisp
SGASAU` has quit [Quit: ERC (IRC client for Emacs 26.3)]
SGASAU has joined #lisp
vaporatorius has quit [Read error: No route to host]
mangul has quit [Ping timeout: 256 seconds]
monokrom has joined #lisp
liberliver1 has joined #lisp
liberliver has quit [Read error: Connection reset by peer]
<White_Flame>
if you were using plists instead of alists, you could use the standard (setf (getf plist key) value) and that would construct a new entry if not found
<jackdaniel>
but then you limit yourself to eq test
<lukego>
I'm using symbol property lists at the moment i.e. GET but it seems a bit scattered. maybe plist is better, or hashtable evne.
vibs29 has left #lisp ["Leaving"]
<lukego>
Just had a feeling there was a simple way to do it with alists in CL even without alexandria but must be mistaken
wsinatra has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
wsinatra has quit [Client Quit]
wsinatra has joined #lisp
orivej has joined #lisp
wsinatra has quit [Client Quit]
wsinatra has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
<Xach>
lukego: (push (cons key value) alist) is another way
oxum has joined #lisp
<lukego>
Xach: right. but will grow with repeated definitions, right? I thought PUSHNEW would do the trick but doesn't seem to replace existing items, only suppress the new one
<lukego>
maybe I'll just stick with symbol properties
<jackdaniel>
do you have a constraint which doesn't let you use alexandria?
<Xach>
lukego: who's afraid of a little consing?
<jackdaniel>
(just curious, if plists are OK then fine)
<Josh_2>
plists are great
<Josh_2>
so are alists
<jackdaniel>
Xach: pushnew will retain the old value
<jackdaniel>
ah, nvm, you were referring to plain push
<lukego>
jackdaniel: no grudge against alexandria, already using it, was just surprised there wasn't a pure way
Necktwi has joined #lisp
<Bike>
it's because the setf expansion sometimes has to alter a cons and sometimes has to alter a variable, so you can't just define a (setf assoc-value) function
<Xach>
i reach for alists mostly when the automatic undoing as you call/return is handy
davepdot_ has joined #lisp
<jackdaniel>
I find alists much easier to parse visually (i.e defpackage vs defsystem)
<lukego>
Xach: I'm just maintaining my little (deffoo bar ...) registry. now it's (setf (get 'foo 'bar) ...). pretty fine. (all-foo) then uses do-all-symbols to collect the 'bar property when present, which is the kind of stupid inefficient code I like :)
<Josh_2>
Xach: What do you mean?
<lukego>
er, I have 'foo and 'bar switched there
<lukego>
Xach: if I'd use push I'd have duplicates and then have to remove when making an (all-foo) list I guess
oxum has quit [Ping timeout: 260 seconds]
Necktwi_ has quit [Ping timeout: 258 seconds]
<Xach>
Josh_2: like how you can call things that take an alist with new entries prepended, and it doesn't alter the alist in the caller, and it's simple tod o.
<Josh_2>
oh right
<Josh_2>
yeh
davepdotorg has quit [Ping timeout: 264 seconds]
<jackdaniel>
n.b ecl's compiler environment is maintained with this technique
oxum has joined #lisp
<Xach>
sometimes it's hidden behind an abstraction but using straight alists is simple enough.
gko has joined #lisp
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
davepdot_ has quit [Remote host closed the connection]
Josh_2` has joined #lisp
davepdotorg has joined #lisp
srazzaque has joined #lisp
Josh_2 has quit [Ping timeout: 256 seconds]
<jdz>
FWIW I'm using quite a few alists like this, and until I think of an abstraction I just look up a cell using assoc, and if the cell is found just (setf cdr), if not found then setq the variable with acons.
liberliver has joined #lisp
<Xach>
pve: thanks for putting system-watcher on github!
<Bike>
well that's what the setf assoc-value does
<jdz>
Right, now I know there's assoc-value.
srazzaque has quit [Quit: ERC (IRC client for Emacs 26.3)]
srazzaque has joined #lisp
sbodin_ has left #lisp [#lisp]
patlv has joined #lisp
EvW1 has joined #lisp
stoneglass has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
EvW1 has quit [Ping timeout: 240 seconds]
renzhi_ has joined #lisp
gxt_ is now known as gxt
renzhi_ has quit [Read error: Connection reset by peer]
<lukego>
Quite a pleasure to write Lisp code :). Lot of ways to do the same thing to choose from, but quite satisfying to write a few functions and see which one fits the nicest.
jfrancis_ has joined #lisp
jfrancis has quit [Read error: Connection reset by peer]
<Bike>
you could specify (map sequence) for that last one
<Bike>
and then skip the list integer method
<lukego>
Just now I have (defun add-foo (id &rest init) (setf *foo-db* (cons (apply #'make-foo :id id init) (remove id *foo-db* :key #'foo-id) and skipping the whole deffoo macro
<Shinmera>
Use list* instead of cons!
davepdot_ has joined #lisp
<splittist>
Bike: thanks. It just kind of growed...
davepdotorg has quit [Ping timeout: 260 seconds]
<lukego>
splittist: that's some advance code :-) reminds me that I really need to get my black belt in LOOP one day
<Xach>
> Derived type of #:PTR42 is (COMMON-LISP:VALUES (COMMON-LISP:COMPLEX COMMON-LISP:SINGLE-FLOAT) COMMON-LISP:&OPTIONAL), conflicting with its asserted type SB-SYS:SYSTEM-AREA-POINTER.
<phoe>
that's a type error
<phoe>
sounds like a bug in their code
<Xach>
phoe: sure. but cffi recently changed also.
<phoe>
yes, correct
<phoe>
I'm reading the CFFI changes now
<Shinmera>
That... does not look like my defcenum change
<Xach>
is the cffi breaking change accidental or intentional?
<luis>
thonkpod, stylewarning: your %CLADIV definition seems to be working around the bug that CFFI 0.22.0 fixes! it's performing the type translations that CFFI should be doing on its own.
<stylewarning>
Probably true
<stylewarning>
Would love help and suggestions to simplify the code and make it as efficient as possible
<luis>
stylewarning: ok, then your complex-single-float dectype should map to :pointer (or (:pointer (:struct whatever)))
davepdot_ has quit [Remote host closed the connection]
<luis>
stylewarning: oh, is it pass by reference and return by value?
rippa has joined #lisp
<stylewarning>
luis: IIRC yes
oxum has quit [Remote host closed the connection]
kpoeck has joined #lisp
mmkarakaya has joined #lisp
* Xach
tries to figure out which project defines the WIRE-FORMAT package, wishes he had saved metadata for such things
<luis>
stylewarning: oh ok, ignore my comment then.
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
<splittist>
srandon111: not really. It eventually uses a browser to present the state of a game graphically. CL does not have a canonical graphical thingy like racket.
<_death>
Xach: protobuf?
<Xach>
aha, and that was changed quite recently
<Xach>
fun!
<xristos>
srandon111: doing graphics in CL is a messy situation (compared to Racket), and involves a lot of trial and error and/or be willing to write a lot of plumbing code
<xristos>
there are libraries that are easy to get going with (like ltk) but they don't compare to what Racket has
<_death>
luis: if you have the time, I'd appreciate if you checked some of my cffi/slime changes.. maybe some of them are worth turning into pull requests
edgar-rft has quit [Quit: Leaving]
ahungry has quit [Ping timeout: 256 seconds]
<PuercoPope>
phoe: how long will the meeting last?
<phoe>
PuercoPope: the recording is 54 minutes long, so I'd expect that an hour + the duration of webcam chat on Jitsi
ahungry has joined #lisp
<PuercoPope>
phoe: thanks. I think I can make it for the second half then
<PuercoPope>
best of luck with the initiative
rpg has joined #lisp
<phoe>
PuercoPope: the recording will also be on Twitch + YouTube as backup
<phoe>
thanks!
<luis>
_death: which changes are those?
<beach>
phoe: Remind me what the title is and who is doing the presenting?
<phoe>
beach: "Integrating independent condition systems" by Michał "phoe" Herda
<beach>
Great! Thanks.
<beach>
I might be able to watch it for a while.
<papachan>
When it will start?
<phoe>
papachan: 23 minutes from now
<phoe>
at full hour
<papachan>
ok ! thanks
<PuercoPope>
phoe: do all presentations have to last a full hours? Are there ~10-15 minute slots?
<phoe>
PuercoPope: no time limit whatsoever
bitmapper has joined #lisp
<phoe>
both up and down
<phoe>
someone suggested that we should do a series of lightning talks someday, and I think it would be a good idea
<phoe>
just, like, a series of five-minute presentations from various people who work on various things
<phoe>
;; also, I hoped that my presentation would be shorter, but it ended up being 54 minutes long
<phoe>
PuercoPope: if you're up for recording anything, I'll gladly accept it for future online meets, no matter how short it is
<MichaelRaskin>
phoe: I guess you would ask that stuff scheduled to run at 18:00 finishes by midnight or so
<phoe>
MichaelRaskin: does that mean six hours of material or what
<phoe>
or one hour of material and five hours of Jitsi talk
<phoe>
I'm up for the latter
<MichaelRaskin>
Well, with the latter you never know how it goes
<MichaelRaskin>
So obviously
<MichaelRaskin>
The former would probably declared an overkill
<phoe>
I prefer to split such into two parts
<phoe>
the official one - as long as the talks are
ayuce has quit [Remote host closed the connection]
<phoe>
the unofficial one - 'til no one is sober
<phoe>
and then even longer than that!
<MichaelRaskin>
I would say that at 6h _three_ parts sound like a plan
<phoe>
what is the third part
<PuercoPope>
phoe: I was thinking of showing how I'm using the MOP to extend to the object model to support XCB requests/requests.
<stylewarning>
luis: I’m not sure how a type error could come out of a DEFCFUN no matter what you write
<travv0>
reminiscing about the first two parts
<MichaelRaskin>
I mean three recordings of 2h each
<phoe>
PuercoPope: please do
<phoe>
MichaelRaskin: oh! that could happen, but 2h recordings are somewhat long on themselves
<phoe>
that's already a mini-workshop
<phoe>
and also I'd need 6h of material to stream, and that means someone'd need to record it
<phoe>
PuercoPope: I can dig that, please record that and I'll schedule it for the next meet
<MichaelRaskin>
phoe: I have in my life given what was effectively a 6 to 8 hour talk (but on theoretical stuff), but it was indeed in weekly instsallments
<luis>
stylewarning: defcfun expands into code with forms coming from cffi:expand-from-foreign and the like
<stylewarning>
you can see the type error easily: the "inner" pointer is bound to a (COMPLEX a b); and the outer pointer is trying to deref the inner ptr
<stylewarning>
#4 is trying to deref the complex made by #3
<luis>
Indeed.
<stylewarning>
So I guess the question is: Who is in the wrong? Am I instructing CFFI wrong (and it somehow worked before)? Or did this CFFI change do some wacky stuff?
mathrick has quit [Remote host closed the connection]
<luis>
Xach: released 0.22.1 which should fix things for magicl
mathrick has joined #lisp
kpoeck has joined #lisp
orivej has quit [Quit: No Ping reply in 210 seconds.]
orivej has joined #lisp
milanj has quit [Quit: This computer has gone to sleep]
Bike has quit [Ping timeout: 256 seconds]
oxum has joined #lisp
choegusung has joined #lisp
mangul has quit [Ping timeout: 272 seconds]
m1m0 has quit [Quit: Leaving]
oxum has quit [Ping timeout: 264 seconds]
rgherdt has joined #lisp
Jesin has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
asarch has joined #lisp
lavaflow has quit [Ping timeout: 240 seconds]
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
<asarch>
How is better? (let (...) (defun foo (...) ...) ... (foo bar baz)) or (flet ((foo (...) ...)) (let (...) (foo bar baz))?
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
lavaflow has joined #lisp
sauvin has quit [Read error: Connection reset by peer]
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
milanj has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
kingragworm has joined #lisp
kingragworm has quit [Remote host closed the connection]
<buffergn0me>
asarch: The latter? Unless you really need a global function that is a closure
<asarch>
Thank you!
jprajzne has quit [Quit: Leaving.]
<asarch>
That is for GTK+ with cl-cffi-gtk's (within-main-loop (flet ... (let ...)))
Bike has joined #lisp
mathrick has quit [Remote host closed the connection]
mathrick has joined #lisp
mathrick_ has joined #lisp
mathrick has quit [Client Quit]
mathrick_ is now known as mathrick
rpg has joined #lisp
_heisig has joined #lisp
heisig has quit [Ping timeout: 272 seconds]
_heisig has quit [Quit: Leaving]
<phoe>
The first online Lisp meeting is over now and the recording is posted at https://www.youtube.com/watch?v=5xprY8GCxFQ - thanks to everyone who participated, and I'm looking for material and videos for future editions!
ebrasca has quit [Remote host closed the connection]
dddddd has joined #lisp
abhixec has joined #lisp
lucasb has joined #lisp
efm has quit [Write error: Connection reset by peer]
efm has joined #lisp
jeosol has quit [Remote host closed the connection]
efm has quit [Excess Flood]
efm has joined #lisp
milanj has quit [Quit: This computer has gone to sleep]
SGASAU` has quit [Remote host closed the connection]
SGASAU` has joined #lisp
orivej has quit [Ping timeout: 264 seconds]
kpoeck has quit [Remote host closed the connection]
stoneglass has quit [Quit: stoneglass]
bars0 has joined #lisp
kpoeck has joined #lisp
SGASAU` has quit [Quit: ERC (IRC client for Emacs 26.3)]
SGASAU has joined #lisp
orivej has joined #lisp
lavaflow has quit [Ping timeout: 240 seconds]
fluxwave has quit [Quit: leaving]
lavaflow has joined #lisp
lottaquestions has joined #lisp
izh_ has joined #lisp
narimiran has quit [Quit: leaving]
sstc has quit [Quit: WeeChat 2.8]
cosimone has joined #lisp
elflng has quit [Ping timeout: 260 seconds]
pve has quit [Quit: leaving]
orivej has quit [Ping timeout: 256 seconds]
elflng has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
izh_ has quit [Quit: Leaving]
bars0 has quit [Ping timeout: 260 seconds]
karayan has quit [Remote host closed the connection]
ahungry has quit [Remote host closed the connection]
karayan has joined #lisp
orivej has joined #lisp
ayuce has quit [Read error: Connection reset by peer]
rpg_ has joined #lisp
rpg_ has quit [Client Quit]
rpg has quit [Ping timeout: 264 seconds]
kpoeck has quit [Remote host closed the connection]
rozenglass1 has quit [Ping timeout: 272 seconds]
davepdotorg has joined #lisp
ljavorsk has joined #lisp
oxum has joined #lisp
davepdotorg has quit [Ping timeout: 265 seconds]
SGASAU has quit [Remote host closed the connection]
oxum has quit [Ping timeout: 256 seconds]
SGASAU has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 260 seconds]
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
Lord_of_Life_ is now known as Lord_of_Life
hiroaki_ has quit [Ping timeout: 246 seconds]
gxt has quit [Ping timeout: 240 seconds]
dalz has quit [Remote host closed the connection]
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
gxt has joined #lisp
efm has quit [Ping timeout: 240 seconds]
orivej has quit [Ping timeout: 256 seconds]
gravicappa has quit [Ping timeout: 258 seconds]
davsebamse has quit [Ping timeout: 240 seconds]
davsebamse has joined #lisp
cosimone has quit [Quit: Quit.]
jprajzne has joined #lisp
<jfrancis_>
I have a need to draw some very very very basic graphics on a Linux console in a window. Doesn't even need to be color (ie, white lines on a black background is sufficient). Some basic primitives like, "draw a line from a,b to c,d" or "draw a circle with radius r at a,b" would be nice, but not critical. What's the easiest thing in quicklisp to do those basic tasks?
<jfrancis_>
...and when I say "Linux console", what I mean specifically is a standard X desktop.
<phoe>
sounds like a use case for McCLIM I guess
<jfrancis_>
I'm not opposed to that, but there isn't something more lightweight?