v88m has quit [Ping timeout: 264 seconds]
spacebat1 has joined #commonlisp
waleee has quit [Ping timeout: 272 seconds]
stacy has joined #commonlisp
mindCrime has joined #commonlisp
Bike has quit [Quit: https://mibbit.com Online IRC Client]
Josh_2 has quit [Ping timeout: 264 seconds]
yitzi has joined #commonlisp
sm2n has quit [Ping timeout: 272 seconds]
igemnace has joined #commonlisp
yitzi has quit [Quit: Leaving]
stacy has quit [Quit: q]
dsk has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
Bike has joined #commonlisp
hubvu has quit [Quit: Connection closed for inactivity]
aeth has quit [Changing host]
aeth has joined #commonlisp
srhm has quit [Quit: Konversation terminated!]
mindCrime has quit [Ping timeout: 264 seconds]
mindCrime has joined #commonlisp
mindCrime has quit [Ping timeout: 252 seconds]
contrapunctus has left #commonlisp [#commonlisp]
<beach> Good morning everyone!
contrapunctus has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 272 seconds]
Lord_of_Life has joined #commonlisp
Lycurgus has joined #commonlisp
esb has quit [Quit: Client closed]
Lycurgus has quit [Quit: Exeunt]
leeb has joined #commonlisp
Oladon has quit [Quit: Leaving.]
domovod has joined #commonlisp
blihp26 has quit [Quit: Ping timeout (120 seconds)]
Nilby has joined #commonlisp
Oladon has joined #commonlisp
blihp has joined #commonlisp
esb has joined #commonlisp
<esb> it smells fresh in here
<beach> It is.
<beach> esb: Are you new here? I don't recognize your nick.
Bike has quit [Quit: https://mibbit.com Online IRC Client]
<esb> yes, I wondered about clarifying that. I am more of a lurker, but I’ve been parjanya on the previous thingy
<beach> I see.
<esb> so hi back :) glad to see we migrated so quickly
<aeth> They didn't really give the Lisp/Scheme community a choice. Especially the Scheme one.
<aeth> They nuked #scheme, #guile, #clasp and probably a few others
<esb> I was reading the logs from the previous server. I just found out today about the move... it’s quite surreal, even with princes involved, quite the plot
<esb> and the guy doesn’t appear to be the smartest... instead of just keeping quiet and hoping everyone would forget about the change, they decided to take control of everything apparently
contrapunctus has left #commonlisp [#commonlisp]
contrapunctus has joined #commonlisp
cammie has joined #commonlisp
<aeth> I think "buy a claim to be crown prince of a country with no monarchy" (not even the only claim out there) and "ban everyone who disagrees with me from the network" are related personality traits.
jans has quit [Ping timeout: 265 seconds]
contrapunctus has left #commonlisp [#commonlisp]
esb has quit [Remote host closed the connection]
esb has joined #commonlisp
<loke[m]> Libera already has more activity in terms of messages than freenode.
contrapunctus has joined #commonlisp
<loke[m]> But freenode has more users (although treding downwards). That suggests to me that there are a lot of idlers remaining.
* moon-child wonders how many abandoned screen'd irssis running on forgotten servers there are
<moon-child> never to be touched again
<loke[m]> Could it be 37k? :-)
<loke[m]> (the number of users on freenode)
<White_Flame> yeah, I've been on channels on ircnet where they occasionally (every few years) do an idler kick just to see who's still there
<phadthai> reminds me of xkcd "undocumented feature"
<loke[m]> Many clients have autorejoin though :-)
<White_Flame> yeah, then it moves to PM + ban ;)
Cymew has joined #commonlisp
lonzo has joined #commonlisp
amk has quit [Ping timeout: 252 seconds]
v88m has joined #commonlisp
amk has joined #commonlisp
shka has joined #commonlisp
<aeth> I used to autorejoin on kick but it's an easy way to get kickbanned next (and bans don't necessarily get removed)
Oladon has quit [Quit: Leaving.]
lonzo has quit [Quit: Leaving]
<pjb> aeth: not a bad idea, irc.lisp.org ; make a redirection of paste.lisp.org to ideone.com too (IDE-1 lets you run CL code on sbcl or clisp), wiki.lisp.org to cliki.net, standard.lisp.org to lispworks hyperspec, common.lisp.org to common-lisp.net, gitlab.lisp.org to gitlab.comon-lisp.net, and so on and have a www.lisp.org index all those services.
<moon-child> I don't think irc.lisp.org specifically makes very much sense
<pjb> aeth: lisp.org is registered to Association of Lisp Users; 63-65 boulevard Massena; 75013 Paris Phone: +33.170377666 Fax: +33.143730576
<moon-child> it represents, I suppose, an official endorsement of a given irc server by the owner of lisp.org. But presumably that server isn't used exclusively for lisp
<pjb> moon-child: the point would be to have a single name hierarchy for all things lisp, with redirections.
<pjb> moon-child: so when thing changes, like freenode->libera->nextone->until we decide to run our own, at least irc.lisp.org can track them.
<pjb> and people don't have to change their configuration.
<moon-child> yes. But libera (or some other network) isn't a thing lisp, it's a thing irc which contains a thing lisp
<pjb> Exactly. It's a host!
<moon-child> I am not going to choose my primary IRC server based on the location of #lisp
<pjb> So we redirect to a host.
<moon-child> nor will I use irc.lisp.org, because my primary use of IRC is not lisp-related. I expect that this is also so for most people
<pjb> moon-child: this is another thing, of course. But I mostly wouldn't be on irc if not for lisp.
<pjb> aeth: I still think it's a good idea, if you generalize and index it.
<pjb> who's in the AoLU in Paris?
<stylewarning> pjb: nobody anymore IIRC
<stylewarning> probably needs updating
<pjb> Who was?
<pjb> Ah damned, the address is that of the registrar, not the association…
<pjb> (Gandi.net)
leeb_ has joined #commonlisp
leeb has quit [Ping timeout: 252 seconds]
pve has joined #commonlisp
<aeth> moon-child: no, you wouldn't use it like that and I probably wouldn't, either, since I'm in dozens of channels at the moment
<aeth> moon-child: but it does seem to be a fairly common thing, and (if all of them have updated) it would address the current issue
<aeth> well, if it happened again
Nilby has quit [Ping timeout: 272 seconds]
Th30n has joined #commonlisp
attila_lendvai has joined #commonlisp
dider has joined #commonlisp
hendursa1 has joined #commonlisp
engblom has quit [Changing host]
engblom has joined #commonlisp
hendursaga has quit [Ping timeout: 252 seconds]
dider has quit [Quit: Client closed]
silasfox has joined #commonlisp
dsk has quit [Remote host closed the connection]
dsk has joined #commonlisp
wanagnuj has joined #commonlisp
esb has quit [Remote host closed the connection]
heisig has joined #commonlisp
blihp has quit [Ping timeout: 250 seconds]
<lukego> Hey what is the Greatest Of All way to test whether (foo X) is e.g. EQL for all X in LIST? There are some ways...
<lukego> (loop for v = (foo (first list)) for x in (rest list) always (eql (foo x) v)))
<beach> (loop for x in list always (foo x))
<lukego> (= 1 (count-if (distinct) (mapcar #'foo list)))
<lukego> (every (lambda (x) (eql (foo x) (foo (first x)))) list)
<lukego> beach: that just checks they are all non-nil, right?
<beach> Yes, sorry. I think I need a break. I am too tired for this apparently.
<lukego> I feel like there should be a function like (same #'foo list)
<lukego> beach: just checking that I wasn't misunderstanding LOOP, which you know a thousand times better than I do :)
<beach> You can check whether REMOVE-DUPLICATES returns a singleton.
<lukego> yeah. just seems like there should be a function for this, maybe in alexandria or serapeum, but I don't see one
<luis> (every #'eql x (rest x))?
<luis> But yes, a utility function would be nicer.
<luis> Oh, I misread the problem statement.
<lukego> luis: if there's a compliant solution as short as that then I'll be satisfied :)
_whitelogger has joined #commonlisp
silasfox has quit [Ping timeout: 264 seconds]
<lukego> I wrote a utility for e.g. (same #'length lists) and maybe I will propose that for serapeum
<luis> (every (compose (curry #'eql (foo (first x))) #'foo) (rest x)) is a another clunky way to do it
<beach> You just need to compare the first element to every other element.
<lukego> (length= (count-if (distinct) list :key #'foo) 1) ;; getting close?
<luis> What's that distinct?
<lukego> that's a Serapeum function that returns a stateful closure that returns T if it hasn't seen that argument before.
<lukego> maybe there's another variation on that theme that might work somehow...
* tux0r bookmarks serapeum
<luis> It'd be nicer to exit early without applying foo to all elements when possible, though.
_whitelogger has joined #commonlisp
<luis> (not (find (foo (first list)) (rest list) :key #'foo :test-not #'eql)) ; ew
cammie has quit [Ping timeout: 272 seconds]
<lukego> yeah. and O(n) space seems a bit gratuitous too. So far I'm resorting to a dedicated helper https://gist.github.com/lukego/2bdacbaea35211f1c4fde99c74268ebf
<lukego> tux0r: Serapeum is 🔥
<tux0r> :-)
<lukego> luis: that's pretty nice actually. not superficially perhaps but it does execute how you'd want it to
<tux0r> thank you. i had NOT heard of that
<luis> lukego: it fails on the empty list, I realize now
<luis> anyway, enough procrastination! back to work
<lukego> oh hey (apply #'eql (mapcar #'foo list))
<luis> Ah, that's nice. :D
<lukego> thanks for jamming with me here :)
VincentVega has joined #commonlisp
<lukego> oh okay that is also undefined when length of list is < 2 which seems unfortunate..
<beach> (defun same (function list) (if (null list) t (null (find (funcall function (first list)) (rest list) :test-not #'eql :key function))))
Th30n has quit [Ping timeout: 272 seconds]
<phoe> woo! being a CL programmer tends to do wonders to one's ability to program in C++
<gigo> phoe: How so? Any examples you can share?
prite has joined #commonlisp
<lukego> beach: yeah that's a nice formulation :)
<phoe> gigo: yesterday I made a successful use of the concept of mixin class to implement some common functionality without direct inheritance, and today I lifted maybe a few dozen hours of work off my team thanks to the experience with using anonymous functions that I got in Lisp
<tux0r> ah! now that i enabled emojis in emacs, i can even see your text...
<tux0r> modern stuff... pff.
<lukego> beach: any particular reason for (if (null list) t ...) rather than (or (null list) ...) btw, not that it really matters?
<phoe> lukego: they seem equivalent to me
<luis> I'd use OR in that case. 🤷‍♂️ (tux0r 🙋‍♂️)
random-nick has joined #commonlisp
<gigo> luis: why would you use OR instead of IF?
<gigo> phoe: thanks for the example
<luis> gigo: (or x y) as in "true if either x or y are true" seems clearer than (if x t y) "if x is true, then true, else y"
<luis> but it's fairly subjective
<jackdaniel> lukego: the gist is that list is a sequence, not a boolean (semantically)
Th30n has joined #commonlisp
<jackdaniel> scratch what I've said above, still before the second coffee
<lukego> I'm not sure if I understood that comment but oh I guess beach's nice example won't necessarily return T or NIL because FIND will return an actual element? So it's returning a generalized boolean when a T/NIL might be preferable? Then maybe I'd stick with my own gisted one using LOOP
<pjb> luis' solution is the best IMO. ;-)
<pjb> a boolean OR should be easier to read and understand than IF.
<pjb> lukego: note that luis' solution returns (NOT (FIND …)) so it will be a BOOLEAN, not a generalized boolean.
<lukego> luis solution is nice but "law of english translation" from Norvig/Pitman Lisp Style Guide suggests to me that it's worth making a dedicated helper (as in my gist.) "Lists should all have the same length" => (same #'length lists)
<pjb> definitely.
<lukego> oh but yeah that is a nice formulation with the :test-not #'eql
<lukego> hey wait, there was a bug in one of my earlier formulations, I think this is a contender
<lukego> (= 1 (count-if (distinct) list :key #'length))
<lukego> but I think I still prefer SAME
v88m has quit [Ping timeout: 265 seconds]
<jackdaniel> some could be optimized to return t when there is only one element: (defun same (fn list) (or (not (rest list)) (null (find …)))); unless you expect that the function has important side effects
<jackdaniel> s/some/same/
<lukego> let the battle continue at https://github.com/ruricolist/serapeum/issues/88
waleee has joined #commonlisp
waleee has quit [Client Quit]
waleee has joined #commonlisp
tyson2 has joined #commonlisp
<_death> I'd use length for the first list, and a length= operator (which may not need to traverse a whole list) for the rest.. so (or (null sequences) (let ((n (length (first sequences)))) (every (lambda (sequence) (length= sequence n)) (rest sequences))))
contrapunctus has left #commonlisp [#commonlisp]
wanagnuj has quit [Quit: wanagnuj]
contrapunctus has joined #commonlisp
<beach> lukego: I should probably have used OR. It was before my break and I was tired.
domovod has quit [Quit: WeeChat 3.1]
OlCe has joined #commonlisp
<lukego> okay again just checking if there was a subtle reason I was missing because I know you know Lisp much better than I do :)
<beach> I don't think you missed anything. Not this time. :)
<beach> And it occurred to me. With my solution, you could pass the equality test as a parameter as well, in case you want to use something other than EQL.
waleee has quit [Ping timeout: 264 seconds]
waleee has joined #commonlisp
contrapunctus has left #commonlisp [#commonlisp]
contrapunctus has joined #commonlisp
contrapunctus has left #commonlisp [#commonlisp]
contrapunctus has joined #commonlisp
Bike has joined #commonlisp
Nilby has joined #commonlisp
contrapunctus has left #commonlisp [#commonlisp]
contrapunctus has joined #commonlisp
sabra has joined #commonlisp
igemnace has quit [Quit: WeeChat 3.1]
attila_lendvai has quit [Read error: Connection reset by peer]
<sabra> Finally found the right channel
<tux0r> yay?
<pjb> _death: it would be more efficient to use (length of-the-smallest-list-first)
<sabra> tux0r: yay!
<pjb> _death: imagine if the first lists is 1 billion elements, and all the others with which you use length= 1e9 are actually only 1 element!
contrapunctus has left #commonlisp [#commonlisp]
<pjb> _death: in this case, you'd want to walk all the lists in parallel (or if you have a massive amount of them, perhaps a random selection of them first).
attila_lendvai has joined #commonlisp
contrapunctus has joined #commonlisp
Th30n has quit [Quit: WeeChat 3.1]
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #commonlisp
<_death> pjb: you could walk them all in parallel, sure..
nwoob has joined #commonlisp
ircseeker has joined #commonlisp
ircseeker has quit [Excess Flood]
<_death> pjb: whether it's more efficient depends on the inputs.. with my version I'd expect to make the user aware that it's preferable to have the shortest list first
Inline has quit [Quit: Leaving]
Inline has joined #commonlisp
<_death> pjb: but a parallel version would likely make a good general solution
attila_lendvai has quit [Ping timeout: 264 seconds]
<pjb> _death: we can always find a situation where it's not. Eg. if there are 1 million lists, half of them are 1e6 elements, and the rest is 1e9.
<pjb> so you'd have to walk 1e12 conses. But if you take a random sample, say 100 lists, you will walk only 1e8 conses and find that half of them are 1e6.
<pjb> Now of course, perhaps in the non-sampled there's a shorter list?
<_death> another alternative is to keep the count along with the list, or use a vector :)
<_death> I think we reached the fixed point of programming: It Depends
heisig has quit [Quit: Leaving]
<dim> I like to call that variant “can't tell without seeing the data first” ; that might be because of my background though
nwoob has left #commonlisp [#commonlisp]
<jackdaniel> wasn't the length only one particular case? as (same #'length lists) ;?
<jackdaniel> I mean, for that particular question there is (alexandria:length= …), and it even takes some provisions to not do too much work
yitzi has joined #commonlisp
<_death> jackdaniel: yes, I don't know whether lukego had the same-list-length as a concrete problem and abstracted in a particular axis, or whether he started from the abstraction and just gave it as an example (he did use "e.g."..).. I also see that he used length= in one of his forms, so he's aware of that operator
<_death> although, I didn't expect alexandria:length= to have the semantics that it has
Cymew has quit [Ping timeout: 252 seconds]
<_death> "equisize" feels like a neologism
srhm has joined #commonlisp
theBlackDragon has quit [Changing host]
theBlackDragon has joined #commonlisp
<pjb> To make a smart system, where determining if a bag of lists are of the same length, in all conditions, you would need to keep some meta information about the lists. In this case, the list of the lists should be kept (or at least, an order of magnitude). Then the system could intelligently select an algorith or another depending on the meta information it has on the data.
jans has joined #commonlisp
<pjb> If you're asked if a set of books have the same number of pages, you can already see the thickness of books, and select a thick one and a thin one to check they don't have the same number of pages.
<pjb> You wouldn't count the pages of thousands of books…
zacts has joined #commonlisp
<_death> that would depend on the thickness of a page.. if there is a pattern of use, you could attempt to devise a policy to choose the appropriate method.. you can look at it as a reinforcement learning problem, reward being linked to the amount of time/comparisons/etc.
_whitelogger has joined #commonlisp
<_death> furthermore, the whole processing pipeline can be thought as a series of choices between alternative methods, and then you're faced with delayed reward and the credit assignment problem, which some RL methods can help with
jans has quit [Ping timeout: 268 seconds]
<_death> (the choices may not always be independent)
OlCe has quit [Remote host closed the connection]
zacts has quit [Killed (NickServ (GHOST command used by zacts_))]
<pjb> _death: of course. But a book that takes 100 MB probably has more pages than one that takes 10 kB. Depending on the thickness of the pages.
<pjb> AI deals with bias!
<pjb> No bias, no intelligence.
blizzard has joined #commonlisp
blizzard is now known as derelict
dsk has quit [Ping timeout: 272 seconds]
<_death> a book that takes 100 MB likely has lots of pictures (sometimes of text, ugh) :)
kpoeck has joined #commonlisp
dbotton has joined #commonlisp
<dbotton> So this is the new freenode #lisp -> #commonlisp? I feel like Rip Van Winkle
<_death> yes, welcome back
<aeth> welcome
<dbotton> my targets all off by least a month now... but could be worse
OlCe has joined #commonlisp
domovod has joined #commonlisp
didi has joined #commonlisp
<didi> Is it possible to have a etypecase's cause with two or more types? e.g. (etypecase x ((or type1 type2 ... typen) ...))
sm2n has joined #commonlisp
v88m has joined #commonlisp
<_death> yes, any type specifier will work
<didi> _death: Nice, thank you.
leeb_ has quit [Quit: WeeChat 3.1]
cage has joined #commonlisp
Lycurgus has joined #commonlisp
<pjb> didi: technically, (or type1 … typen) is a single type.
<didi> pjb: As a type specifier, indeed.
ec has joined #commonlisp
<didi> I just realize I can use type specifiers with #'typep. TIL. I'll give myself a lvl up, thank you.
ec has quit [Client Quit]
kpoeck has quit [Quit: Connection closed]
ec has joined #commonlisp
sm2n has quit [*.net *.split]
iisi has quit [*.net *.split]
jmercouris has quit [*.net *.split]
jeosol has quit [*.net *.split]
Colleen has quit [*.net *.split]
hexology has quit [*.net *.split]
Inline has quit [*.net *.split]
jcowan has quit [*.net *.split]
luis has quit [*.net *.split]
fengshaun has quit [*.net *.split]
scymtym has quit [*.net *.split]
MetaYan has quit [*.net *.split]
phoe has quit [*.net *.split]
spec has quit [*.net *.split]
lonjil has quit [*.net *.split]
samebchase has quit [*.net *.split]
moon-child has quit [*.net *.split]
Pent has quit [*.net *.split]
dale has quit [*.net *.split]
spacebat1 has quit [*.net *.split]
v88m has quit [Read error: Connection reset by peer]
lonjil2 has joined #commonlisp
jmercouris has joined #commonlisp
iisi has joined #commonlisp
fengshaun has joined #commonlisp
moon-child has joined #commonlisp
jcowan has joined #commonlisp
Colleen has joined #commonlisp
sm2n has joined #commonlisp
hexology has joined #commonlisp
spacebat1 has joined #commonlisp
<sukaeto> hi dbotton, glad to see you made it over!
kevingal has quit [Remote host closed the connection]
Nilby has quit [Ping timeout: 244 seconds]
phoe has joined #commonlisp
<phoe> Xach: there's a post at my movim blog at https://mov.im/?blog/phoe%40movim.eu that did not yet get picked up by planet lisp; could you take a look at it?
jeosol has joined #commonlisp
domovod has quit [Quit: WeeChat 3.1]
Nilby has joined #commonlisp
Inline has joined #commonlisp
prite has quit [Quit: Konversation terminated!]
Lycurgus has quit [Quit: Exeunt]
lonjil2 is now known as lonjil
Oladon has joined #commonlisp
esb has joined #commonlisp
Oladon is now known as Oladon_work
Oladon_work is now known as Oladon
<fiddlerwoaroof> lukego: another implementation https://github.com/ruricolist/serapeum/issues/88#issuecomment-852358233
<fiddlerwoaroof> anyways...
<fiddlerwoaroof> Here
<fiddlerwoaroof> I like the "composing lambdas" style my utility library promotes better: https://fwoar.co/pastebin/6c614b5cd17af1abc8759fd1f0249158e10345d0.nil.html
<fiddlerwoaroof> But, this is almost certainly less-optimized in most implementations
slant has joined #commonlisp
nature has joined #commonlisp
tyson2 has quit [Ping timeout: 264 seconds]
akoana has joined #commonlisp
slant has quit [Ping timeout: 244 seconds]
VincentVega has quit [Remote host closed the connection]
bmansurov has joined #commonlisp
bmansurov is now known as bmansurov_
bmansurov_ has quit [Changing host]
bmansurov_ has joined #commonlisp
bmansurov_ is now known as bmansurov
Oladon has quit [Quit: Leaving.]
sabra has quit [Quit: Konversation terminated!]
bmansurov has quit [Quit: 👋]
tyson2 has joined #commonlisp
kpoeck has joined #commonlisp
Oladon has joined #commonlisp
ec has quit [Ping timeout: 252 seconds]
karlosz has joined #commonlisp
shka has quit [Ping timeout: 264 seconds]
didi has quit [Remote host closed the connection]
azimut has quit [Ping timeout: 252 seconds]
azimut has joined #commonlisp
Nilby has quit [Ping timeout: 264 seconds]
ec has joined #commonlisp
kpoeck has quit [Ping timeout: 252 seconds]
NotThatRPG has quit [Read error: Connection reset by peer]
contrapunctus has left #commonlisp [#commonlisp]
contrapunctus has joined #commonlisp
kpoeck has joined #commonlisp
pve has quit [Quit: leaving]
Oladon has quit [Quit: Leaving.]
ec has quit [Ping timeout: 252 seconds]
loke has quit [*.net *.split]
loke has joined #commonlisp
karlosz has quit [Quit: karlosz]
derelict has quit [Ping timeout: 252 seconds]
yitzi has quit [Quit: Leaving]
NotThatRPG has joined #commonlisp
luis has joined #commonlisp
<jmercouris> Anyone have experience doing FFI to nodejs?
cage has quit [Quit: rcirc on GNU Emacs 27.1]
kpoeck has quit [Ping timeout: 264 seconds]
contrapunctus has left #commonlisp [#commonlisp]
ad-absurdum has joined #commonlisp
mindCrime has joined #commonlisp
karlosz has joined #commonlisp
contrapunctus has joined #commonlisp
contrapunctus has left #commonlisp [#commonlisp]
contrapunctus has joined #commonlisp
hendursaga has quit [Ping timeout: 252 seconds]
hendursaga has joined #commonlisp
nature has quit [Quit: Lost terminal]
crc has quit [Excess Flood]
srhm has quit [Quit: Konversation terminated!]
crc has joined #commonlisp
srhm has joined #commonlisp
random-nick has quit [Ping timeout: 272 seconds]
derelict has joined #commonlisp
ec_ has joined #commonlisp
yitzi has joined #commonlisp
dsk has joined #commonlisp
derelict has quit [Ping timeout: 272 seconds]
Lord_Nightmare has quit [Quit: ZNC - http://znc.in]
Lord_Nightmare has joined #commonlisp
Oladon has joined #commonlisp
tyson2 has left #commonlisp [ERC (IRC client for Emacs 27.2)]
ircseeker has joined #commonlisp
ircseeker has quit [Excess Flood]
ec_ has quit [Quit: ec_]
srhm has quit [Quit: Konversation terminated!]
luna-is-here has quit [Remote host closed the connection]
edgar-rft has quit [Ping timeout: 272 seconds]
luna-is-here has joined #commonlisp
edgar-rft has joined #commonlisp
ad-absurdum has quit [Quit: Leaving]
derelict has joined #commonlisp