Xach changed the topic of #commonlisp to: Common Lisp, the #1=(programmable . #1#) programming language | Wiki: <https://www.cliki.net> | IRC Logs: <https://irclog.tymoon.eu/libera/%23commonlisp> | Cookbook: <https://lispcookbook.github.io/cl-cookbook>
<fe[nl]ix> ok
taiju has joined #commonlisp
dre has quit [Quit: Leaving]
cosimone has quit [Remote host closed the connection]
s-liao has joined #commonlisp
morganw has quit [Remote host closed the connection]
thomaslewis has joined #commonlisp
dre has joined #commonlisp
jstoddard has left #commonlisp [ERC (IRC client for Emacs 27.2)]
asarch has quit [Quit: leaving]
asarch has joined #commonlisp
VincentVega has quit [Quit: ERC (IRC client for Emacs 27.2)]
s-liao has quit [Ping timeout: 256 seconds]
s-liao has joined #commonlisp
<asarch> Learnig is fun
s-liao has quit [Quit: Ping timeout (120 seconds)]
s-liao has joined #commonlisp
igemnace has joined #commonlisp
cosimone has joined #commonlisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #commonlisp
Algernon91 has joined #commonlisp
Common-Lisp has joined #commonlisp
<Common-Lisp> I didn't realize they turned me into a channel!
<Catie> I can't believe they distilled an entire person out of the contents of this channel
<Common-Lisp> Modern technology really is amazing.
<asarch> Have you seen Alexa?
* moon-child wants symbolic ai
s-liao has quit [Ping timeout: 256 seconds]
s-liao has joined #commonlisp
Algernon91 has quit [Ping timeout: 240 seconds]
ebrasca has quit [Remote host closed the connection]
random-nick has quit [Ping timeout: 256 seconds]
s-liao1 has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
Catie has quit [Remote host closed the connection]
dec0d3r has joined #commonlisp
Catie has joined #commonlisp
lisp123 has joined #commonlisp
waleee has quit [Ping timeout: 240 seconds]
lisp123 has quit [Ping timeout: 240 seconds]
waleee has joined #commonlisp
Common-Lisp has quit [Quit: bye.]
miique has quit [Ping timeout: 256 seconds]
thomaslewis has left #commonlisp [#commonlisp]
ec has joined #commonlisp
<White_Flame> moon-child: there's plenty of it out there
<moon-child> not really
<moon-child> all the funding is for ml
<White_Flame> all the old stuff still works
<White_Flame> and is out there
pieguy128 has quit [Ping timeout: 240 seconds]
thomp has joined #commonlisp
pieguy128 has joined #commonlisp
<Catie> This is a pretty open-ended question, but sometimes I can load systems using Quicklisp, but I get COMPILE-FILE-ERRORs if I try loading them with ASDF:LOAD-SYSTEM or REQUIRE. Is this a known issue, and if so what causes it?
pieguy128 has quit [Ping timeout: 240 seconds]
<White_Flame> dependencies?
<White_Flame> (although I'm not sure they'd be compile-file-errors specifically)
<etimmons> That does seem odd. Do you have an example?
pieguy128 has joined #commonlisp
<Catie> For me the most common one is CLX. If I don't have the FASLs cached, I can't REQUIRE it, but I can QL:QUICKLOAD it. Let me clear my cache to get the exact error
tyson2 has quit [Read error: Connection reset by peer]
tyson2 has joined #commonlisp
<Catie> Well okay, now I just straight up can't REQUIRE Quicklisp systems. So never mind for now I guess?
<etimmons> I'm surprised REQUIRE worked at all
<White_Flame> isn't REQUIRE basically deprecated?
thomaslewis has joined #commonlisp
<Catie> I've been using it wherever I'm able because it's worked, basically. For the most part, at least
thomaslewis has left #commonlisp [#commonlisp]
<mfiano> Yeah don't use require, except maybe for implementation modules in your rc file
<Catie> What's the preferred method?
<mfiano> asdf:load-system
<etimmons> +1
<mfiano> or the quicklisp wrapper
<mfiano> or since etimmons is here, CLPM :)
<Catie> Can you do that without modifying asdf:*central-registry*? Because that's the onerous part that I've been trying to avoid
<White_Flame> are you modifying search paths for REQUIRE or something?
<etimmons> If you're using QL then any system you've quickloaded in the past can be asdf:load-system'd after QL has been loaded
<White_Flame> also the QL allows the local-projects dir
<mfiano> I don't think it's recommended by asdf maintainers to go messing with the registry iirc
<mfiano> but you can control it via special files in your dotfiles
<Catie> "modifying" in this case includes locally binding. Historically I've done a (let ((asdf:*central-registry* (cons #P"..." asdf:*central-registry*))) (asdf:load-system :whatever))
<Catie> I've been using REQUIRE because it's part of the standard, but Quicklisp isn't. Basically I'm trying not to assume Quicklisp will be available. I suppose ASDF isn't either, but it's a de facto standard. Though again, Quicklisp kind of is as well. Hhhhh this made more sense in my head
<etimmons> require is really only useful for implementation provided modules. because it's pretty underspecified
<mfiano> Using REQUIRE, or Common Lisp modules, is usually a big mistake
<etimmons> ASDF is very configurable, so if you want to manually manage all your systems you can pretty easily configure it via environment variables (useful for build scripts) or configuration files in any number of places on your file system
<Catie> Hmm okay, so it sounds like I mostly just need to get more familiar with ASDF
<etimmons> If you don't want to manually manage all your systems (i.e., you want to have your dependencies resolved and downloaded for you), QL or CLPM are great for that.
<mfiano> Or just use QL or CLPM and leave the magic be
<etimmons> And both of them have ways to then load your downloaded systems directly with asdf:load-system
<mfiano> But knowing ASDF magic can certainly be helpful, but there be dragons
<Catie> See, and it sounds like I had some pretty cool magic being able to REQUIRE things willy-nilly, but then I went and observed it and it went away
<etimmons> BTW, asdf:_central-registry_ still works (and I imagine will continue to work for quite a while), but I really recommend the "source registry" configuration methods. Much more flexible and can be done without modifying rc files for N implementations
biog has quit [Quit: ZZZzzz…]
<Catie> Thank you everyone! I appreciate the help
thomp has quit [Ping timeout: 268 seconds]
s-liao1 has quit [Ping timeout: 256 seconds]
Algernon91 has joined #commonlisp
s-liao has joined #commonlisp
Algernon91 has quit [Ping timeout: 252 seconds]
selwyn has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
s-liao has quit [Quit: Ping timeout (120 seconds)]
pranavats has left #commonlisp [Error from remote client]
lisp123 has quit [Ping timeout: 256 seconds]
Catie has quit [Quit: going home]
asen has joined #commonlisp
asarch has quit [Quit: leaving]
s-liao has joined #commonlisp
ec has quit [Ping timeout: 276 seconds]
Devon has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
<beach> Good morning everyone!
<drakonis> morn'
thomp has joined #commonlisp
Bike has quit [Quit: Lost terminal]
lisp123 has joined #commonlisp
s-liao has quit [Quit: Client closed]
perrierjouet has quit [Quit: WeeChat 3.4]
euandreh has quit [Ping timeout: 240 seconds]
perrierjouet has joined #commonlisp
waleee has quit [Ping timeout: 256 seconds]
myrrh has joined #commonlisp
semz has quit [Ping timeout: 268 seconds]
<ns12> I am worried about getting viruses from Quicklisp. Deoes Quicklisp contain viruses?
perrierjouet has quit [Quit: WeeChat 3.4]
<drakonis> no? how would it
biog has joined #commonlisp
<moon-child> because somebody put one there...
<ns12> Virus libraries (e.g. cl-trojan-and-worms).
<sm2n> It could, if someone here was evil. Hopefully that is not true though
<moon-child> do you expect every line of code there has been vetted?
<moon-child> you must trust. Or not.
<moon-child> But beware of falling into hypothetical rabbitholes like the thompson hack
<ns12> cl-alexandria includes code to mine BItcoins.
<sm2n> lol no
lisp123 has quit [Remote host closed the connection]
semz has joined #commonlisp
<sm2n> I would say reading library code is more of a cultural habit in the CL community than it might be in other language communities. Especially with M-.
<drakonis> M-?
<sm2n> But I don't know if people go and read libraries from start to finish (I do sometimes).
<aeth> quicklisp is curated, unlike larger languages (it doesn't scale)
<sm2n> Many libraries are short enough for it to be feasible
<aeth> of course, something could slip by
<ns12> With a MITM attack on a network used by Lisp zealots, it might be possible to mine Bitcoins using Alexandria.
<sm2n> drakonis: M-. The emacs command to jump to defn
<drakonis> oh
<drakonis> right
<ns12> aeth: Curated by whom? What if it is "curated" by someone with malicious intent?
<aeth> afaik, every package goes through Xach
<sm2n> I'm pretty sure he doesn't read all the code though
<aeth> as opposed to many package management systems where you can just point it at a github or whatever
<ns12> The security of almost every Lisper's computer depends on one person?
<sm2n> he just checks if they build
<ns12> "All test cases for cl-trojan-and-worms are passing".
<sm2n> yes, so read the code in your dependencies beforehand if you are worried
<White_Flame> everybody uses npm, even though there's malicious stuff there, too
<White_Flame> probably in pip as well
<ns12> sm2n: That is a lot of work.
<aeth> npm is impossible to track
<White_Flame> it's part of the model
<sm2n> ns12: That is the only way no matter what package manager you use.
<aeth> use any package and pull in hundreds of dependencies with npm
<aeth> at least you have a chance to read all of your dependencies' code with CL
<ns12> That is silly of JavaScripters.
<sm2n> There are some efforts for distributed auditing/attestation, but they haven't really taken off.
<sm2n> It's actually not bad in CL, since in my experience the set of dependencies that most projects have is relatively small
<aeth> kind of sounds like a job for the government
X-Scale` has joined #commonlisp
<aeth> everyone needs code audited, nobody's going to spend time or money to audit it
mrmr3 has joined #commonlisp
perrierjouet has joined #commonlisp
<sm2n> or similar governance orgs, yeah
<moon-child> why the hell should I trust the government?
scymtym_ has joined #commonlisp
dmgk_ has joined #commonlisp
* moon-child looks askance at nsa-backdoored crypto
sndr has joined #commonlisp
<sm2n> Some languages are single implementation, and also have "blessed" libraries
cognemo_ has joined #commonlisp
<sm2n> the idea being that if you trust that the implementation is not malware, you should trust the libraries too
Lord_Nightmare2 has joined #commonlisp
pieguy128_ has joined #commonlisp
<White_Flame> no system that I know which supports downloading libraries off the internet has a preventative vetting process for finding malicious things
<sm2n> doesn't really work here either, but it seems plausible that people could pool money to pay people to audit code, through some foundation (the CL foundation?) or something
<White_Flame> quicklisp as least (afaik) ensures that all dependencies in a single release all build & test with each other
<White_Flame> you don't get that in most other languages
<sm2n> The issue is that most people don't care enough to actually make such a thing happen anyway
<White_Flame> if you're concerned about security, you download a package and stop using quicklisp
<semz> ^
<White_Flame> include that source code in your own internal repository and don't allow updates from teh outside world
Demosthe1ex has joined #commonlisp
<sm2n> This is a problem everywhere, even outside language ecosystems — how do you verify any software you have isn't malicious?
<semz> That also has the upside that you're thinking more about which dependencies you add
<sm2n> (You can't really)
gpiero_ has joined #commonlisp
<White_Flame> sm2n: you'd have to be able to recognize 100% of all forms of maliciousness
<aeth> it's just a subset of the problem of internet communities scaling beyond manual moderation of everything being possible... in this case, of code
<White_Flame> as well as 100% of the means to obfuscate maliciousness
<aeth> and the answer is people prefer scale to safety
tyson2 has quit [Remote host closed the connection]
<sm2n> In general, it comes down to economics
<Alfr> For this purpose start with considering all non-halting programs malicious.
<White_Flame> heh
pieguy128 has quit [*.net *.split]
gpiero has quit [*.net *.split]
amb007 has quit [*.net *.split]
monaaraj has quit [*.net *.split]
shka has quit [*.net *.split]
sander has quit [*.net *.split]
OlCe has quit [*.net *.split]
scymtym has quit [*.net *.split]
danieli has quit [*.net *.split]
skyl4rk has quit [*.net *.split]
Lord_Nightmare has quit [*.net *.split]
hhdave has quit [*.net *.split]
Demosthenex has quit [*.net *.split]
materialfuture has quit [*.net *.split]
X-Scale has quit [*.net *.split]
ns12 has quit [*.net *.split]
Krystof has quit [*.net *.split]
cognemo has quit [*.net *.split]
dmgk has quit [*.net *.split]
mrmr has quit [*.net *.split]
tsiolkov has quit [*.net *.split]
flip214 has quit [*.net *.split]
sndr is now known as sander
mrmr3 is now known as mrmr
dmgk_ is now known as dmgk
X-Scale` is now known as X-Scale
shka has joined #commonlisp
Lord_Nightmare has joined #commonlisp
Lord_Nightmare2 has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
Krystof has joined #commonlisp
danieli has joined #commonlisp
materialfuture has joined #commonlisp
flip214 has joined #commonlisp
skyl4rk has joined #commonlisp
tsiolkov has joined #commonlisp
ns12 has joined #commonlisp
amb007 has joined #commonlisp
loke has quit [Ping timeout: 256 seconds]
perrierjouet has quit [Quit: WeeChat 3.4]
loke has joined #commonlisp
perrierjouet has joined #commonlisp
OlCe` has joined #commonlisp
perrierjouet has quit [Quit: WeeChat 3.4]
perrierjouet has joined #commonlisp
lisp123 has joined #commonlisp
karlosz has joined #commonlisp
parjanya has quit [Ping timeout: 240 seconds]
lisp123 has quit [Ping timeout: 240 seconds]
rgherdt has joined #commonlisp
tsiolkov has quit [Ping timeout: 256 seconds]
karlosz has quit [Quit: karlosz]
iamFIREcracker has joined #commonlisp
thomp has quit [Ping timeout: 268 seconds]
s-liao has joined #commonlisp
igemnace has quit [Ping timeout: 268 seconds]
jealousmonk has quit [Remote host closed the connection]
igemnace has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
karlosz has joined #commonlisp
monaaraj has joined #commonlisp
asen has quit [Quit: Leaving]
Jing has joined #commonlisp
myrrh has quit [Remote host closed the connection]
Cymew has joined #commonlisp
karlosz has quit [Quit: karlosz]
alfonsox has joined #commonlisp
Algernon69 has joined #commonlisp
Algernon91 has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
Algernon69 has quit [Ping timeout: 245 seconds]
theothornhill has joined #commonlisp
cosimone has quit [Remote host closed the connection]
thomaslewis has joined #commonlisp
cosimone has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 256 seconds]
Demosthe1ex is now known as Demosthenex
notzmv has quit [Ping timeout: 240 seconds]
gaqwas has joined #commonlisp
MajorBiscuit has joined #commonlisp
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
mgl has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
nij- has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
theothornhill has quit [Remote host closed the connection]
amb007 has joined #commonlisp
treflip has joined #commonlisp
Colleen has quit [Read error: Connection reset by peer]
Colleen has joined #commonlisp
parjanya has joined #commonlisp
ahlk has quit [Remote host closed the connection]
breakwindows has joined #commonlisp
attila_lendvai has joined #commonlisp
rotateq has joined #commonlisp
pve has joined #commonlisp
alfonsox has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
<phoe> sm2n: (defun malicious-operator-p (x) (if (eq x 'eval) :very :maybe))
<moon-child> (funcall #'eval ...)
<phoe> oh no
<moon-child> (progn (dont-halt) (eval ...))
lisp123 has joined #commonlisp
selwyn has joined #commonlisp
lisp123 has quit [Quit: Leaving...]
<frodef> I'm looking at Hunchentoot sessions, and I'm curious to understand why sessions are internally stored/referenced by an integer ID (rather than, say, the SESSION-STRING/cookie), anyone happen to know?
s-liao has joined #commonlisp
rgherdt has quit [Ping timeout: 256 seconds]
rgherdt has joined #commonlisp
notzmv has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
igemnace has quit [Ping timeout: 245 seconds]
taiju has quit [Ping timeout: 240 seconds]
rogersm has joined #commonlisp
Lord_of_Life_ has joined #commonlisp
igemnace has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 256 seconds]
pillton has quit [Remote host closed the connection]
Lord_of_Life_ is now known as Lord_of_Life
igemnace_ has joined #commonlisp
igemnace has quit [Ping timeout: 240 seconds]
perrierjouet has quit [Quit: WeeChat 3.4]
s-liao has quit [Quit: Client closed]
<rotateq> With what in the MOP does a class track which instances it made to know what to update? I also mean the ones that weren't bound to symbols, but are still existent till the next full garbage collection.
s-liao has joined #commonlisp
igemnace has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
igemnace_ has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
<Krystof> a class doesn't track them
<rotateq> okay Krystof, so do you know what does it then? :)
<Krystof> yes!
<Krystof> at least in some commonly-used implementations
<rotateq> would you tell me this deep magical secret?
perrierjouet has joined #commonlisp
<rotateq> SBCL is enough for now
<Krystof> every time you ask me a question, I delete my half-finished description to answer your question
<rotateq> heh! :D sry
<Krystof> the class holds a description of its current layout (slots, inheritance, etc.). That might be called a "layout" or a "wrapper" depending on context in sbcl
<Krystof> each instance also refers to that layout
<rotateq> yes okay ..
<Krystof> if a class is updated, it marks the current layout as obsolete, and gets a new layout. Now the class no longer refers to the old layout, but instances do
<Krystof> when you access an instance, part of the access protocol is checking whether the instance's layout is up-to-date or obsolete. If it's obsolete, you go into the update-instance flow
xsperry has quit [Ping timeout: 240 seconds]
<Krystof> if you never access an instance, it is never updated; it stays in its obsolete state (but it doesn't matter, because nothing accesses it)
<rotateq> yes right I got that by little experimenting, also with the :allocation :class similarly
<rotateq> so to say how i came to my question: in another talk with someone it came to singleton classes and I thought "hah, i have an idea" so I did it but the only thing that now misses is to look if there's still a referenced instance of a class anywhere
<Krystof> so, the point is that nothing in this protocol requires the class to keep track of instances. Instead, instances keep track of which version of the class they were defined with
<rotateq> alright! thank you very much (again)
<rotateq> so i could also do it with a locally scoped data structure to mimic it properly
<Krystof> no problem. For singletons, you could make allocate-instance throw an error, and use the class-prototype as the singleton instance?
<rotateq> ahh right, didn't thought of allocate instance :) but made it with some other and a SINGLETON-CLASS metaclass for SINGLETON-OBJECTs
<rotateq> then we came to this "oh so your methods aren't owned by the class?" and I thought longer, but not aware enough now how to make metaclass stuff (eg with funcallable-standard-class or standard-generic-function) to mimic even that safely for certain generic functions
<rotateq> Krystof: and not aware how to use prototypes :) but it comes by time I hope
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
parjanya has quit [Ping timeout: 240 seconds]
s-liao has quit [Ping timeout: 256 seconds]
perrierjouet has quit [Quit: WeeChat 3.4]
perrierjouet has joined #commonlisp
monaaraj has quit [Ping timeout: 240 seconds]
amb007 has quit [Ping timeout: 256 seconds]
<rotateq> and i realized again why it makes absolutely no sense (by logic!) to ask for the slot-values of an instance in the (allocate-instance :before)-method :D
amb007 has joined #commonlisp
monaaraj has joined #commonlisp
<rotateq> ahh sry I surely meant the (initialize-instance :before)-method
<rotateq> and "throw" an error? :D
s-liao has joined #commonlisp
scymtym_ is now known as scymtym
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
anticomputer has quit [Quit: quit]
anticomputer_ has joined #commonlisp
Jing has joined #commonlisp
attila_lendvai has quit [Ping timeout: 240 seconds]
random-nick has joined #commonlisp
pranavats has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
igemnace has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
theothornhill has joined #commonlisp
nij- has left #commonlisp [#commonlisp]
theothornhill has quit [Remote host closed the connection]
igemnace has joined #commonlisp
taiju has joined #commonlisp
tyson2 has joined #commonlisp
<beach> Krystof: In Common Lisp, errors are not "thrown", they are "signaled". :)
* beach thinks Krystof might be using other languages these days.
<moon-child> (throw nil (make-instance 'error))
<beach> C'mon, allow me to pester Krystof a bit.
dec0d3r has quit [Quit: Leaving]
<Duuqnd> Now I'm really tempted to print out a DESCRIBE output of an error object and start tossing it around.
<Duuqnd> Literally throwing errors
<moon-child> beach: :)
perrierjouet has quit [Quit: WeeChat 3.4]
perrierjouet has joined #commonlisp
heisig has joined #commonlisp
<phoe> d'oh
<phoe> beach: it's easy and practical to throw errors in Common Lisp
<phoe> (throw 'somewhere (make-instance 'error))
<phoe> oh wait moon-child already mentioned that
* phoe hides
<moon-child> phoe: considering you wrote the common lisp condition system book, I think you have way more right to say that than I do :P
<phoe> nope
<phoe> everyone has a right to throw errors
<phoe> it's a part of standard Common Lisp
<phoe> just like throwing non-errors
* moon-child throws phoe a sandwich
* phoe thankfully is wrapped in a (catch 'phoe ...), calls #'CONSUME on the sandwich
<yitzi> I want a sandwich. Throw one to me moon-child!
<moon-child> (throw 'yitzi (make-instance 'sandwich))
<edgar-rft> (funcall #'munch)
* phoe hopes it isn't EQ to the one he received
<yitzi> ACTION yitzi catches and rethrows into separate thread.
<moon-child> (throw 'phoe #1=#.(make-instance 'sandwich)) (throw 'yitzi #1#)
<phoe> okay, now let's figure out how this one works
<phoe> is there a race condition caused by #'CONSUME and #'MUNCH?
<yitzi> Ha! Yes. We need sandwich-deep-clone.
heisig has quit [Ping timeout: 256 seconds]
<moon-child> (let ((x (make-instance 'sandwich))) (setf (sandwich-filling x) x) x)
heisig has joined #commonlisp
<yitzi> I'm off to go teach. Thanks phoe, moon-child and edgar-rft for making me laugh so early here. Cheers!
<madnificent> Any clues on where to find documentation regarding woo? (and I suspect dexador)
<phoe> nowhere
<phoe> I doubt you can find that what does not exist
<madnificent> phoe: I don't know where that is. Is that a new tool? I've seen the name before so it must be very popular! ^_^
<phoe> AFAIK the only real source of information is the source code itself
<moon-child> that's not true! There is a readme
<moon-child> it has ~10 lines of code examples
<moon-child> :^)
<madnificent> that's very exact documentation on the behaviour, but sadly any change would become a breaking change. must lean towards browser version numbers.
jpl01 has joined #commonlisp
miique has joined #commonlisp
z3t0 has quit [Read error: Connection reset by peer]
parjanya has joined #commonlisp
<Krystof> beach: oh boy it's too long since I've talked about, let alone written, proper Lisp code
s-liao has quit [Quit: Client closed]
booaa has joined #commonlisp
kevingal has joined #commonlisp
breakwindows has quit [Ping timeout: 240 seconds]
<semz> What is improper Lisp code? 🤔
<heisig> semz: (declare (optimize (speed 3) (safety 0))) :D
theothornhill has joined #commonlisp
<jackdaniel> (declare (optimize (speed yes)))
<heisig> jackdaniel: Brilliant! I think I will explicitly allow this declaration in my loop optimization library :)
<jackdaniel> :)
<rotateq> beach: And I'm glad you teached me to use "signaling a condition" too. :)
<rotateq> (declare (beat-c yes))
<Xach> heisig: some petalisp failures this morning
<phoe> (declare (optimize)) ;; the compiler should know what to do
<phoe> Xach: ooh, a missing split-sequence dependency
<jackdaniel> technically correct speak is means towards the end of making the communication easier. in a spirit of this definition the fact that in common lisp conditions are "signaled" and code is organized in "packages" is very unfortunate - it is a barrier for efficient communication with people not immersed in common lisp
<rotateq> phoe: QOCLC -> Quantum Oracle Common Lisp Compiler
<semz> very unfortunate acronym
<random-nick> jackdaniel: I thought java also uses the word package?
theothornhill has quit [Ping timeout: 240 seconds]
<jackdaniel> I didn't say that it doesn't
<rotateq> yes indeed jackdaniel
<rotateq> (the unfortunateness i mean)
<Xach> this draft RFC always made me really mad: https://datatracker.ietf.org/doc/html/draft-meyer-lisp-cons-04
Bike has joined #commonlisp
<moon-child> 'A Content distribution Overlay Network Service for LISP' ... what ??
<jackdaniel> name coincidence
<jackdaniel> for both lisp and cons
<Xach> and car and cdr
<Xach> it's a prank
<jackdaniel> right, I was about to say that it sounds like a poor joke
<Xach> that's why it makes me mad.
<heisig> Xach, phoe: Thanks, I just added the missing dependency on split-sequence.
<phoe> if I had a cent I had for every time I did that mistake
<phoe> ...I would certainly have some US foreign currency in my household now
<phoe> I wonder if there could be a Lisp bot that figures out which system needs the dependency, opens its ASD file, inserts the dependency, and automatically files a quicklisp PR
<phoe> of course it would be wrong like 20% of the time
<phoe> but the remaining 80%, hmm
<phoe> s/quicklisp PR/a PR from quicklisp/
<_death> with package-inferred-systems, an :import-from suffices
<phoe> that too!
<heisig> I think I should just add extra CI jobs that load each system independently, and not just all of them in the 'usual' order.
<jackdaniel> wasn't that we have too many 80% correct solutions and too little complete ones? at least that's what a blog post I see every 1,5 year on hackernews says
<jackdaniel> the lisp curse or something
<jackdaniel> I suppose that the curse is that I have to see it every 1,5 year, and lisp is only accidental
<phoe> ^
<phoe> a bot that automatically files PRs for missing dependencies would be good enough I guess
<phoe> even if it sometimes will fail to do the right thing
<phoe> Xach: would you accept anything like that into your workflow, or is that a silly and/or unnecessary idea?
<jackdaniel> like it will file an issue instead of a pr?
<phoe> jackdaniel: yes - if it can't reliably insert a dependency or make it build after inserting it, it should just file an issue IMO
<jackdaniel> I was joking - you've said that "bot (...) files PRs, (...)it sometimes will fail to do the right thing"
<jackdaniel> so the only thing beside PR that comes to mind is an issue
<_death> github bots are bad.. if I started getting issues from them, I'd disable issues
<Xach> phoe: i don't really want to automatically file PRs. i have code that automatically formats PRs for me, but I submit them "manually" to some degree.
<Xach> err
<Xach> sorry, not PRs. issues.
* Xach got confused
<Xach> I would never ever want to automatically file PRs.
<phoe> Xach: OK - just wondering if there's anything that could optimize your workflow a bit
<phoe> _death: also fair point
<_death> when a program makes work for a person..
<Xach> phoe: it would be great if people just stopped making software for a while
<Xach> say, for 2 to 5 years
<Xach> not just for lisp
<phoe> oh
<phoe> I'll try
<rotateq> so taking a step back and proving some more critical things and let other things ripe out maybe?
monaaraj has quit [Ping timeout: 256 seconds]
<moon-child> would be cool if you could take a parameter in the function namespace. (defun f (#'x y) (x y)). But it would make for inconsistencies w/destructuring lambda lists
<phoe> (defun f (x y) (fbind ((x x)) (x y))) is a workaround
<phoe> where fbind is available in serapeum
<moon-child> I mean, could just make my own defun/lambda/
<_death> but it's not the same function, is it?
<moon-child> _death: what do you mean?
<phoe> _death: AFAIK correct, it's not EQ
<moon-child> ah, yes
heisig has quit [Quit: Leaving]
<phoe> there's no way to make it both EQ and portably I think
<moon-child> can do it with a code walker
OlCe` has quit []
OlCe has joined #commonlisp
<mfiano> Hmm...did I find a conformance bug in SBCL?
<mfiano> (subtypep foo-instance 'foo) is an error, but (subtypep foo-instance foo-instance) ;=> T,T
<mfiano> When would an instance be considered a type specifier?
<_death> for example classes are type specifiers
<mfiano> Ah, I thought their name was only.
<moon-child> can't find relevant section of clhs
<_death> clhs 4.2.3
<moon-child> hm, but
booaa has quit [Quit: Connection closed]
<moon-child> (typep #1=#.(make-instance 'foo) #1#) gives 'bad thing to be a type specifier: #<COMMON-LISP-USER::FOO {10047D88F3}>'
<moon-child> so I think subtypep does err
monaaraj has joined #commonlisp
<_death> that's not a class
<mfiano> My example was with an instance, not a class
<moon-child> ^
<_death> you asked a question, and I gave an answer.. the example was incomplete
s-liao has joined #commonlisp
<mfiano> A standard-object to be exact
<_death> classes are also instances
<mfiano> But not vice versa
<moon-child> (if (equal type1 type2) (values t t) ...) ;the culprit
<_death> so give a complete example
<mfiano> (defclass foo () ()) (let ((foo (make-instance 'foo))) (subtypep foo foo))
s-liao has quit [Client Quit]
<_death> ok.. so now you're passing something that's not a type specifier, and so violates constraints in the Arguments and Values section
<mfiano> Correct, and SBCL is happy to return T,T. Is this UB or a conformance problem?
<_death> clhs subtypep
<phoe> mfiano: likely the latter
<mfiano> That's what I read and a type specifier should not accept a standard-object
<beach> Undefined, apparently. And a case for WSCL.
<phoe> I can assume that SUBTYPEP can easily optimize
<phoe> if two type specifiers are EQ then it can safely return (VALUES T T)
<phoe> because they denote the same type
<mfiano> The key words are type specifiers
<beach> mfiano: A standard object can be a type specifier.
<mfiano> It can...oh, hmm
<Bike> that is exactly what sbcl is doing, phoe. though it uses equal.
<phoe> beach: but it isn't a class
<_death> clhs 1.4.4.3
<specbot> The ``Arguments and Values'' Section of a Dictionary Entry: http://www.lispworks.com/reference/HyperSpec/Body/01_ddc.htm
<phoe> like, class objects can be type specifiers
<beach> phoe: If it is not a class, it is not a type specifier.
<mfiano> And it is not
<beach> I know.
<Bike> the instance is not a type specifier. as such, subtypep has been called incorrectly and the behavior is undefined.
<phoe> but in case of (defclass foo () ()), (make-instance 'foo) is not a valid argument to SUBTYPEP
<phoe> sbcl could possibly signal an error, something like a type-error because the argument is not of type (or symbol cons class)
<phoe> but that's already a zone of SBCL being nice or not
<phoe> since it's already UB
<mfiano> Ok yes, I understand now.
<phoe> Bike: OK, and by pure luck that defers to EQ for standard objects
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
<phoe> so, an (un)fortunate accident
amb007 has joined #commonlisp
<moon-child> phoe: that's not luck, that's specified :P
<phoe> I meant pure luck that SUBTYPEP on SBCL does EQUAL before anything else
<moon-child> ah, yes
<phoe> could possibly file a wishlist issue for SBCL, at least to have a type check in there
<phoe> could work in safe code, I guess
Algernon91 has quit [Quit: Leaving]
<mfiano> Thanks all, I haven't been Lisping for some months (unfortunately missed the 2-5 years), and made a mistake when I really wanted (eq (class-name (class-of instance)) type-specifier).
<_death> I should get back to Lisping for a few hours ;)
_ante_ has joined #commonlisp
euandreh has joined #commonlisp
ec has joined #commonlisp
ec has quit [Ping timeout: 276 seconds]
xaltsc has joined #commonlisp
ec has joined #commonlisp
<mfiano> Stupid question, but is there a library that mimics "interfaces" from other languages. What I mean, is I'd like it to be an error if the user forgets to implement a method for all of a set of generic functions for some given class/classes/etc specializers (that the library author decides on)
cosimone has quit [Remote host closed the connection]
cosimone has joined #commonlisp
<moon-child> coalton
<mfiano> When dealing with very composable APIs with lots of mixins etc, it can be difficult to remember to specialize them all. I could just say "their problem" when they inherit the wrong behaviors, but it would be nice to issue a warning. I know the semantics aren't exactly clear here, and that is why I'd like to look at if some libraries ever attempted to solve it, excluding some DSL/statically
<mfiano> typed language written in CL. I just want a somewhat light MOP wrapper.
<semz> When would this error be throw^W signalled?
<mfiano> Maybe runtime on each invocation. I don't want to sacrifice the dynamism of Lisp for a mere correctness check.
<mfiano> But that falls under the "unclear semantics"
<moon-child> (defclass c ...) (defmethod ... ((c)))... (check-class c)
<semz> ^ is how I'd do it ad-hoc too
<semz> but I'm not aware of any library
<mfiano> Heh ok, thanks.
<moon-child> you could also make some kinda scope. (my-defclass c (super) (slots) (methods))
<moon-child> and it checks you define all the required methods
taiju has quit [Remote host closed the connection]
<moon-child> (can still define other methods later ofc)
rotateq has quit [Remote host closed the connection]
<mfiano> Unrelated: Just stumbled upon this, which seems, umm, interesting: https://github.com/tfeb/conduit-packages
CrashTestDummy has joined #commonlisp
CrashTestDummy has quit [Client Quit]
anticomputer_ is now known as anticomputer
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
attila_lendvai has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
phantomics has quit [Ping timeout: 256 seconds]
aartaka has quit [Ping timeout: 240 seconds]
monaaraj has quit [Ping timeout: 256 seconds]
ec has quit [Remote host closed the connection]
ec has joined #commonlisp
phantomics has joined #commonlisp
jealousmonk has joined #commonlisp
monaaraj has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
thomp has joined #commonlisp
<madnificent> mfiano: I also work with (check-xyz) but it's for configuration files rather than classes. We want something similar in software related to our lisp code too. But very much ad-hoc.
Oladon has joined #commonlisp
thomaslewis has joined #commonlisp
thomp has quit [Ping timeout: 256 seconds]
Catie has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
<madnificent> Anyone know if it's intentional that #'woo:run does not yield? it runs forever (the webserver works though)
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
<etimmons> I've never used woo, but I imagine it's intentional and the thread that calls run becomes the thread in charge of the event loop
monaaraj has quit [Ping timeout: 256 seconds]
unyu has quit [Read error: Connection reset by peer]
monaaraj has joined #commonlisp
<madnificent> etimmons: could be, though there's a stop-server command and that expects some input.
unyu has joined #commonlisp
waleee has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tyson2 has joined #commonlisp
treflip has quit [Ping timeout: 256 seconds]
raeda_ has joined #commonlisp
raeda has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
mgl has quit [Quit: Client closed]
Cymew has quit [Ping timeout: 240 seconds]
jeosol has quit [Quit: Client closed]
<etimmons> madnificent: That does seem weird then
igemnace has quit [Ping timeout: 245 seconds]
VincentVega has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
jstoddard has joined #commonlisp
thomp has joined #commonlisp
monaaraj has quit [Ping timeout: 250 seconds]
<luis> etimmons: I'd rather "merge" osicat pull requests using rebase as I find the history is much more readable that way, but you're the one doing actual work so if you prefer to work that way that's fine too
shka has quit [Quit: Konversation terminated!]
shka has joined #commonlisp
<luis> etimmons: we can enable the "enforce linear history" option on github, if you agree
<jackdaniel> oh oh, I've came with a saying: "technically correct to real world is what matematically equal is to floats"
<phoe> :D
<phoe> jackdaniel: I like that one
<jackdaniel> great, my place among wilde and goethe is granted now
<etimmons> luis: I agree. I don't normally use GitHub (and have all my Gitlab projects set up for linear history) so I totally forgot to check what would happen when hitting the merge button
nij- has joined #commonlisp
<luis> etimmons: ok, done. We share the same sort of OCD then :D
<etimmons> :)
<nij-> Hi! Any defacto way to quickly get places in a deeply nested sequence? Something like
<nij-> (place '(2 :a :e) '(nil nil (:a (:b 3 :e 4) :d 5))) ;; => 4
<jackdaniel> I have a strong impression I saw this question not that long ago from you (with answers!)
amb007 has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
leo_song_ has joined #commonlisp
jdz_ has joined #commonlisp
form_fee- has joined #commonlisp
hubvu_ has joined #commonlisp
nefercheprure has joined #commonlisp
zagura__ has joined #commonlisp
amb007 has joined #commonlisp
cosimone has quit [*.net *.split]
loke has quit [*.net *.split]
Lord_Nightmare has quit [*.net *.split]
semz has quit [*.net *.split]
White_Flame has quit [*.net *.split]
pjb has quit [*.net *.split]
Josh_2 has quit [*.net *.split]
jasom has quit [*.net *.split]
hugo has quit [*.net *.split]
phadthai has quit [*.net *.split]
ryanbw has quit [*.net *.split]
leo_song has quit [*.net *.split]
hubvu has quit [*.net *.split]
ggoes has quit [*.net *.split]
mgxm has quit [*.net *.split]
pl has quit [*.net *.split]
derelict has quit [*.net *.split]
moon-child has quit [*.net *.split]
splatt990 has quit [*.net *.split]
|3b| has quit [*.net *.split]
jsatk has quit [*.net *.split]
Nilby has quit [*.net *.split]
jemoka has quit [*.net *.split]
ogamita has quit [*.net *.split]
Odin- has quit [*.net *.split]
jmercouris has quit [*.net *.split]
form_feed has quit [*.net *.split]
ori has quit [*.net *.split]
TMA has quit [*.net *.split]
micro has quit [*.net *.split]
jdz has quit [*.net *.split]
zagura has quit [*.net *.split]
antoszka has quit [*.net *.split]
spacebat3 has quit [*.net *.split]
hefner has quit [*.net *.split]
energizer has quit [*.net *.split]
BytesAndCoffee has quit [*.net *.split]
ecraven has quit [*.net *.split]
cross has quit [*.net *.split]
gin has quit [*.net *.split]
cpape has quit [*.net *.split]
anticomputer has quit [*.net *.split]
ec has quit [*.net *.split]
azimut has quit [*.net *.split]
triffid has quit [*.net *.split]
gxt has quit [*.net *.split]
wyrd has quit [*.net *.split]
Gnuxie has quit [*.net *.split]
cgenie[m] has quit [*.net *.split]
nworb has quit [*.net *.split]
yitzi has quit [*.net *.split]
gabc has quit [*.net *.split]
dcx has quit [*.net *.split]
amk has quit [*.net *.split]
xantoz has quit [*.net *.split]
even4void has quit [*.net *.split]
conjunctive has quit [*.net *.split]
zups has quit [*.net *.split]
parjanya has quit [*.net *.split]
euandreh has quit [*.net *.split]
lonjil has quit [*.net *.split]
miique has quit [*.net *.split]
jpl01 has quit [*.net *.split]
notzmv has quit [*.net *.split]
jealousmonk has quit [*.net *.split]
linjian has quit [*.net *.split]
edmrk[m] has quit [*.net *.split]
rudi has quit [*.net *.split]
gko has quit [*.net *.split]
iquites has quit [*.net *.split]
ullbeking_ has quit [*.net *.split]
drmeister has quit [*.net *.split]
zephyr has quit [*.net *.split]
griffinmb has quit [*.net *.split]
shka has quit [*.net *.split]
raeda_ has quit [*.net *.split]
kevingal has quit [*.net *.split]
perrierjouet has quit [*.net *.split]
rogersm has quit [*.net *.split]
pve has quit [*.net *.split]
Colleen has quit [*.net *.split]
gaqwas has quit [*.net *.split]
sander has quit [*.net *.split]
biog has quit [*.net *.split]
scymtym has quit [*.net *.split]
X-Scale has quit [*.net *.split]
Posterdati has quit [*.net *.split]
qhong_ has quit [*.net *.split]
waku has quit [*.net *.split]
fitzsim has quit [*.net *.split]
frodef has quit [*.net *.split]
lisp123win has quit [*.net *.split]
aeth has quit [*.net *.split]
jgkamat has quit [*.net *.split]
paul0 has quit [*.net *.split]
alvaro121 has quit [*.net *.split]
hisacro has quit [*.net *.split]
contrapunctus has quit [*.net *.split]
Noisytoot has quit [*.net *.split]
mister_m has quit [*.net *.split]
srji has quit [*.net *.split]
bollu has quit [*.net *.split]
Shinmera has quit [*.net *.split]
utis has quit [*.net *.split]
stack has quit [*.net *.split]
snits has quit [*.net *.split]
mfiano has quit [*.net *.split]
mzan has quit [*.net *.split]
sveit_ has quit [*.net *.split]
specbot has quit [*.net *.split]
minion has quit [*.net *.split]
markasoftware has quit [*.net *.split]
attila_lendvai has quit [*.net *.split]
unyu has quit [*.net *.split]
sp has quit [*.net *.split]
Bi[m] has quit [*.net *.split]
katco has quit [*.net *.split]
luis` has quit [*.net *.split]
loke[m] has quit [*.net *.split]
dieggsy has quit [*.net *.split]
shinohai[m] has quit [*.net *.split]
ultera has quit [*.net *.split]
sirufer has quit [*.net *.split]
mht-wtf has quit [*.net *.split]
vegai has quit [*.net *.split]
resttime has quit [*.net *.split]
waleee has quit [*.net *.split]
xaltsc has quit [*.net *.split]
zbrown[m] has quit [*.net *.split]
saturn2 has quit [*.net *.split]
jgart has quit [*.net *.split]
spec has quit [*.net *.split]
edgar-rft has quit [*.net *.split]
Kabriel has quit [*.net *.split]
axvr has quit [*.net *.split]
sm2n has quit [*.net *.split]
dbotton has quit [*.net *.split]
easye has quit [*.net *.split]
payphone has quit [*.net *.split]
susam has quit [*.net *.split]
borodust has quit [*.net *.split]
froggey has quit [*.net *.split]
Lord_of_Life has quit [*.net *.split]
epony has quit [*.net *.split]
kakuhen has quit [*.net *.split]
Spawns_Carpet[m] has quit [*.net *.split]
Arcsech has quit [*.net *.split]
luna-is-here has quit [*.net *.split]
empwilli has quit [*.net *.split]
MetaYan has quit [*.net *.split]
dale has quit [*.net *.split]
antoszka-r has quit [*.net *.split]
GreaseMonkey has quit [*.net *.split]
copec has quit [*.net *.split]
drakonis has quit [*.net *.split]
lieven has quit [*.net *.split]
hirez- has quit [*.net *.split]
bldr has quit [*.net *.split]
rdrg109 has quit [*.net *.split]
nckx has quit [*.net *.split]
opalvaults[m] has quit [*.net *.split]
sepanko has quit [*.net *.split]
Duuqnd has quit [*.net *.split]
icepic1984[m] has quit [*.net *.split]
jaimelm has quit [*.net *.split]
theBlackDragon has quit [*.net *.split]
samebchase has quit [*.net *.split]
jackdaniel has quit [*.net *.split]
les has quit [*.net *.split]
iisi has quit [*.net *.split]
Fade has quit [*.net *.split]
fiddlerwoaroof has quit [*.net *.split]
krjst has quit [*.net *.split]
madnificent has quit [*.net *.split]
thonkpod has quit [*.net *.split]
tyson2 has quit [*.net *.split]
iamFIREcracker has quit [*.net *.split]
akater[m] has quit [*.net *.split]
saltrocklamp[m] has quit [*.net *.split]
CodeBitCookie[m] has quit [*.net *.split]
MatrixTravelerbo has quit [*.net *.split]
opc0de has quit [*.net *.split]
sukaeto has quit [*.net *.split]
alanz has quit [*.net *.split]
sgithens has quit [*.net *.split]
pok has quit [*.net *.split]
gendl has quit [*.net *.split]
Schnouki has quit [*.net *.split]
IUSR has quit [*.net *.split]
phoe has quit [*.net *.split]
skn has quit [*.net *.split]
jfb4 has quit [*.net *.split]
nij- has quit [*.net *.split]
Oladon has quit [*.net *.split]
cognemo_ has quit [*.net *.split]
pieguy128_ has quit [*.net *.split]
dmgk has quit [*.net *.split]
mrmr has quit [*.net *.split]
dre has quit [*.net *.split]
Inline has quit [*.net *.split]
anddam has quit [*.net *.split]
varjag has quit [*.net *.split]
terrorjack has quit [*.net *.split]
okflo has quit [*.net *.split]
psf has quit [*.net *.split]
joast has quit [*.net *.split]
x88x88x has quit [*.net *.split]
_death has quit [*.net *.split]
Patternmaster has quit [*.net *.split]
Mrtn[m] has quit [*.net *.split]
hineios has quit [*.net *.split]
Spawns has quit [*.net *.split]
Mandus has quit [*.net *.split]
sterni has quit [*.net *.split]
ChanServ has quit [*.net *.split]
zagura__ has quit [Quit: Reconnecting]
loke has joined #commonlisp
energizer has joined #commonlisp
ggoes has joined #commonlisp
zagura has joined #commonlisp
derelict has joined #commonlisp
atdt has joined #commonlisp
cosimone` has joined #commonlisp
jsatk_ has joined #commonlisp
jemoka_ has joined #commonlisp
ecraven- has joined #commonlisp
BytesAndCoffee|a has joined #commonlisp
Lord_Nightmare has joined #commonlisp
antoszka has joined #commonlisp
|3b|` has joined #commonlisp
gin_ has joined #commonlisp
mgxm_ has joined #commonlisp
cpape` has joined #commonlisp
JoshYoshi has joined #commonlisp
theothornhill has joined #commonlisp
raeda_ has joined #commonlisp
nij- has joined #commonlisp
shka has joined #commonlisp
waleee has joined #commonlisp
Oladon has joined #commonlisp
tyson2 has joined #commonlisp
unyu has joined #commonlisp
ec has joined #commonlisp
jealousmonk has joined #commonlisp
attila_lendvai has joined #commonlisp
xaltsc has joined #commonlisp
euandreh has joined #commonlisp
kevingal has joined #commonlisp
parjanya has joined #commonlisp
jpl01 has joined #commonlisp
miique has joined #commonlisp
anticomputer has joined #commonlisp
perrierjouet has joined #commonlisp
rogersm has joined #commonlisp
Lord_of_Life has joined #commonlisp
pve has joined #commonlisp
notzmv has joined #commonlisp
Colleen has joined #commonlisp
pieguy128_ has joined #commonlisp
gaqwas has joined #commonlisp
iamFIREcracker has joined #commonlisp
sander has joined #commonlisp
dmgk has joined #commonlisp
scymtym has joined #commonlisp
X-Scale has joined #commonlisp
cognemo_ has joined #commonlisp
mrmr has joined #commonlisp
dre has joined #commonlisp
anddam has joined #commonlisp
fe[nl]ix has joined #commonlisp
Inline has joined #commonlisp
gxt has joined #commonlisp
sveit_ has joined #commonlisp
varjag has joined #commonlisp
Posterdati has joined #commonlisp
qhong_ has joined #commonlisp
terrorjack has joined #commonlisp
fitzsim has joined #commonlisp
wyrd has joined #commonlisp
triffid has joined #commonlisp
waku has joined #commonlisp
azimut has joined #commonlisp
frodef has joined #commonlisp
epony has joined #commonlisp
okflo has joined #commonlisp
psf has joined #commonlisp
lisp123win has joined #commonlisp
mht-wtf has joined #commonlisp
x88x88x has joined #commonlisp
aeth has joined #commonlisp
_death has joined #commonlisp
joast has joined #commonlisp
Patternmaster has joined #commonlisp
Gnuxie has joined #commonlisp
Mrtn[m] has joined #commonlisp
linjian has joined #commonlisp
Bi[m] has joined #commonlisp
sp has joined #commonlisp
jgkamat has joined #commonlisp
paul0 has joined #commonlisp
contrapunctus has joined #commonlisp
vegai has joined #commonlisp
alvaro121 has joined #commonlisp
hisacro has joined #commonlisp
kakuhen has joined #commonlisp
katco has joined #commonlisp
bollu has joined #commonlisp
luis` has joined #commonlisp
akater[m] has joined #commonlisp
sepanko has joined #commonlisp
CodeBitCookie[m] has joined #commonlisp
edmrk[m] has joined #commonlisp
easye has joined #commonlisp
loke[m] has joined #commonlisp
opalvaults[m] has joined #commonlisp
saltrocklamp[m] has joined #commonlisp
cgenie[m] has joined #commonlisp
nworb has joined #commonlisp
MatrixTravelerbo has joined #commonlisp
rudi has joined #commonlisp
dieggsy has joined #commonlisp
Duuqnd has joined #commonlisp
zbrown[m] has joined #commonlisp
shinohai[m] has joined #commonlisp
Arcsech has joined #commonlisp
icepic1984[m] has joined #commonlisp
Noisytoot has joined #commonlisp
yitzi has joined #commonlisp
markasoftware has joined #commonlisp
minion has joined #commonlisp
mzan has joined #commonlisp
skn has joined #commonlisp
specbot has joined #commonlisp
mfiano has joined #commonlisp
stack has joined #commonlisp
srji has joined #commonlisp
mister_m has joined #commonlisp
Shinmera has joined #commonlisp
lonjil has joined #commonlisp
conjunctive has joined #commonlisp
even4void has joined #commonlisp
zups has joined #commonlisp
xantoz has joined #commonlisp
amk has joined #commonlisp
gabc has joined #commonlisp
dcx has joined #commonlisp
griffinmb has joined #commonlisp
zephyr has joined #commonlisp
drmeister has joined #commonlisp
ullbeking_ has joined #commonlisp
gko has joined #commonlisp
iquites has joined #commonlisp
resttime has joined #commonlisp
ultera has joined #commonlisp
sirufer has joined #commonlisp
froggey has joined #commonlisp
borodust has joined #commonlisp
susam has joined #commonlisp
dbotton has joined #commonlisp
payphone has joined #commonlisp
sm2n has joined #commonlisp
phadthai_ has joined #commonlisp
White__Flame has joined #commonlisp
ogamita` has joined #commonlisp
cross_ has joined #commonlisp
pl has joined #commonlisp
spacebat4 has joined #commonlisp
moon-chi- has joined #commonlisp
ryanbw1 has joined #commonlisp
micro_ has joined #commonlisp
Odin-FOO has joined #commonlisp
semz_ has joined #commonlisp
Kabriel has joined #commonlisp
hugo- has joined #commonlisp
spec has joined #commonlisp
edgar-rft has joined #commonlisp
krjst has joined #commonlisp
thonkpod has joined #commonlisp
jgart has joined #commonlisp
madnificent has joined #commonlisp
Fade has joined #commonlisp
les has joined #commonlisp
iisi has joined #commonlisp
samebchase has joined #commonlisp
jackdaniel has joined #commonlisp
fiddlerwoaroof has joined #commonlisp
axvr has joined #commonlisp
hirez- has joined #commonlisp
theBlackDragon has joined #commonlisp
saturn2 has joined #commonlisp
Spawns_Carpet[m] has joined #commonlisp
jaimelm has joined #commonlisp
gendl has joined #commonlisp
copec has joined #commonlisp
lieven has joined #commonlisp
drakonis has joined #commonlisp
GreaseMonkey has joined #commonlisp
dale has joined #commonlisp
MetaYan has joined #commonlisp
antoszka-r has joined #commonlisp
luna-is-here has joined #commonlisp
empwilli has joined #commonlisp
rdrg109 has joined #commonlisp
jfb4 has joined #commonlisp
nckx has joined #commonlisp
bldr has joined #commonlisp
phoe has joined #commonlisp
IUSR has joined #commonlisp
snits has joined #commonlisp
pok has joined #commonlisp
Schnouki has joined #commonlisp
sgithens has joined #commonlisp
opc0de has joined #commonlisp
sukaeto has joined #commonlisp
hineios has joined #commonlisp
alanz has joined #commonlisp
sterni has joined #commonlisp
Mandus has joined #commonlisp
Spawns has joined #commonlisp
ChanServ has joined #commonlisp
victor_ has joined #commonlisp
Oladon has quit [Quit: Leaving.]
hefner has joined #commonlisp
jmercouris has joined #commonlisp
jasom has joined #commonlisp
<remexre> if I have an end-user print method and a developer print method, what variable am I supposed to branch on in PRINT-OBJECT such that the latter gets used in ~s and error messages, but the former gets used in ~a?
<phoe> what do you mean, end-user and developer?
<Bike> *print-escape*
<phoe> that doesn't look like a standard CL distinction
<Bike> probably
<phoe> oh wait - I understand now
karlosz has joined #commonlisp
<Bike> ~s binds *print-escape* to true and ~a binds it to false
<remexre> ah, yep, *print-escape* works great, thanks
<remexre> I was using *print-readably* before
<remexre> oh, which I guess ~s doesn't actually bind, only ~a does? werid
utis has joined #commonlisp
<phoe> clhs 22.3.4.2
<phoe> "~S binds *print-escape* to t."
<remexre> yeah, I read the ~a page and assumed there'd be symmetry between ~a and ~s
karlosz has quit [Quit: karlosz]
nefercheprure is now known as TMA
atdt is now known as ori
attila_lendvai has quit [Remote host closed the connection]
attila_lendvai has joined #commonlisp
cosimone` has quit [Remote host closed the connection]
cosimone` has joined #commonlisp
pjb has joined #commonlisp
theothornhill has quit [Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50)]
aartaka has joined #commonlisp
kevingal has quit [Ping timeout: 256 seconds]
<hobo> does common lisp have some concept of lenses?
<phoe> (ql:quickload :data-lens)?
Kyuvi has joined #commonlisp
<hobo> phoe: great! thank you :)
attila_lendvai has quit [Remote host closed the connection]
attila_lendvai has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
attila_lendvai has quit [Ping timeout: 268 seconds]
tanners has joined #commonlisp
cage has joined #commonlisp
tanners has quit [Client Quit]
* phoe looks around for people to instigat^Woffer a slot for the next Online Lisp Meeting
tanners has joined #commonlisp
wyrd has quit [Remote host closed the connection]
moon-chi- is now known as moon-child
morganw has joined #commonlisp
wyrd has joined #commonlisp
thomp has quit [Ping timeout: 256 seconds]
wyrd has quit [Remote host closed the connection]
wyrd has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
ecraven- is now known as ecraven
MajorBiscuit has quit [Ping timeout: 240 seconds]
ec has quit [Ping timeout: 276 seconds]
ec has joined #commonlisp
masinter has joined #commonlisp
tanners has quit [Ping timeout: 250 seconds]
tanners has joined #commonlisp
srhm has joined #commonlisp
|3b|` is now known as |3b|
srhm has quit [Client Quit]
srhm has joined #commonlisp
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
_ante_ has quit [Ping timeout: 256 seconds]
asarch has joined #commonlisp
White__Flame is now known as White_Flame
cosimone` has quit [Ping timeout: 252 seconds]
asarch has quit [Quit: leaving]
nij- has left #commonlisp [Using Circe, the loveliest of all IRC clients]
tanners has quit [Ping timeout: 240 seconds]
thomaslewis has joined #commonlisp
tanners has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
thomaslewis has left #commonlisp [#commonlisp]
<yitzi> Bike: beach: Figured out to capture the source code references by abusing the stream style stuff I came up with.
<yitzi> Oops. Wrong channel
aartaka has quit [Ping timeout: 250 seconds]
gaqwas has quit [Remote host closed the connection]
theothornhill has joined #commonlisp
karlosz has joined #commonlisp
masinter has left #commonlisp [#commonlisp]
lagash has quit [Ping timeout: 240 seconds]
JoshYoshi has quit [Remote host closed the connection]
Josh_2 has joined #commonlisp
<Josh_2> Hi, is Dex actually faster than Drakma if the connection pool doesn't work?
<Josh_2> Drakma also supports reusing a connection, pretty sure thats how Dex gets the edge on it in the benchmarks
karlosz has quit [Quit: karlosz]
<Josh_2> I think I will just abstract away the differences so I can swap from drakma to dex if I want
mcoll- has joined #commonlisp
<etimmons> Josh_2: Good question. I think in the Dex presentation I saw floating around, it claimed there was.
<etimmons> But I remember thinking it didn't look like much to write home about
* etimmons could very well be misremembering, though
mrmr has quit [Ping timeout: 240 seconds]
<phoe> I have a possibly cyclic graph data structure that I would like to get a modified copy of, where "modified copy" means that I'd like some of the nodes to be different, and also that I want not to mutate the original, and also that I want to maximize structure sharing wherever possible. Is anyone aware of any Lisp code that will help me do that?
<etimmons> I can't work on it for a bit, but I've got a connection pool built on top of drakma. I'm working to get it pulled out into a sensible library and also married with schannel for TLS on Windows
<phoe> a simple example of what I'd like to do is turning (1 2 3 . #1=(4 5)) into (1 2 :three . #1#)
<theothornhill> phoe: FSet? Sounds like a persistent data structure, doesn't it?
<etimmons> When it's in a clean-ish state, I'm planning to reach out to see if it should be incorporated into drakma itself or live as a wrapper around it
<Josh_2> In this case there is a serious chance that I will be making a lot of HTTP requests (webhooks) to listeners
<phoe> a slightly more involved one is turning #1=(1 2 3 4 5 . #1#) into #2=(1 2 :three 4 5 . #2#) because then everything needs to be copied due to a cycle
<phoe> theothornhill: yes, except the catch is, I'd like to use standard Lisp data structures for the nodes - conses, vectors, standard objects
<phoe> hence it sounds more like a GF protocol to participate in if anything
<phoe> also I have no idea if fset permits cycles
<theothornhill> I see
<etimmons> Josh_2: This is the presentation I was thinking of. https://www.slideshare.net/fukamachi/dexador-rises starts on slide 49
<phoe> if there's no code, is anyone aware of already existing algorithms that I can try to implement for doing that?
<Josh_2> etimmons: Thank you :)
<Josh_2> It would be nice if he fixed connection pools :facepalm:
<Josh_2> I think I will just go with Dex
<phoe> everyone can fix it, actually! it's free software
Kyuvi has quit [Ping timeout: 256 seconds]
<Josh_2> In principle
<theothornhill> Josh_2: Wasn't there a new drakma maintainer just recently?
<Josh_2> etimmons: have you ever used Snooze?
thomaslewis has joined #commonlisp
<Josh_2> I think I will use Snooze instead of Carlyle. If I was to modify Carlyle it would just end up like Snooze anyway
thomaslewis has left #commonlisp [#commonlisp]
<Josh_2> Carlyle works great for less complex applications, but the one I have to build now is going to end up exceptionally complicated I think
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
citizenandrew has joined #commonlisp
<citizenandrew> Josh_2: If you really want to use Dexador and have a working connection pool, you could try https://github.com/ajberkley/dexador ... Fukamachi isn't answering pull requests...
<_death> phoe: I think it depends on how you actually want to "modify" it.. if it's a kind of sublis that works on graphs, that's one thing.. if you want to substitute for a specific element not necessarily based on its value, it's another..
<phoe> let me split this into two parts
<phoe> part one: I want to make a part of the whole graph "fresh", where the part involves making a shallow copy of everything between some root vertex of the graph and one or more "target" vertices that I want to mutate in part two
<Josh_2> citizenandrew: hmm I could
VincentVega has quit [Quit: ERC (IRC client for Emacs 27.2)]
<phoe> because of cycles, such copying also involves copying everything that refers to any of the copied vertices, because otherwise they'd refer to the "old" version
Oladon has joined #commonlisp
<Josh_2> For now I will just use normal dex with :use-connection-pool nil and later if a PR is accepted or a permanent fork is made I will change this
<_death> not sure I understand.. since each node can presumably refer to its children, when you replace a child what do you think should happen?
IPmonger has joined #commonlisp
IPmonger has quit [Remote host closed the connection]
<phoe> a simple example of what I'd like to do is turning (1 2 3 . #1=(4 5)) into (1 2 :three . #1#)
<phoe> so in that example, the conses whose CARs and 1 and 2 need to be copied
<phoe> same with the cons whose CAR is 3, we need to copy it and its new CAR becomes :THREE
<phoe> but #1# doesn't need to be copied
<phoe> s/whose CARs and/whose CARs are/
<citizenandrew> Josh_2: also make sure if you do not explicitly set :keep-alive nil, beware that you should close the streams that are returned to you... there is no auto-closing / finalizing.
<etimmons> Josh_2: No, never tried snooze nor carlyle
attila_lendvai has joined #commonlisp
<Josh_2> citizenandrew: is this your fork?
<citizenandrew> Josh_2: yes... that's me. I made the changes because I saw some complaints on irc or reddit about dexador being broken so I figured it was worth fixing... but now I've got a bad taste in my mouth because there's no response to my PR.
<Josh_2> I see, I left a comment on your PR, I think if it is not accepted than you should hard fork and rename honestly
<_death> phoe: in this example there is no cycle, so a simple sublis could work
<etimmons> citizenandrew: I got a PR merged to dexador back in December.
<etimmons> sometimes they can take a while
<phoe> _death: yes, but then #1=(1 2 3 4 5 . #1#) should turn into #2=(1 2 :three 4 5 . #2#)
<Josh_2> Thank you for your work citizenandrew :)
<phoe> and things like #1=(1 2 #1# 4 5) → #2=(1 :two #2# 4 5) and so on
<citizenandrew> etimmons: OK. I'll keep my hopes up!
<phoe> I need to figure out which part of the structure to copy, then do the copying while making the modifications, then return the modified version
<phoe> s/which part/which parts/
lagash has joined #commonlisp
<_death> phoe: in both of these you need to recreate the whole structure, correct? and #1=(1 #3=(a b) #1# 4 5) => #2=(1 #3# #2# 4 5)? but #1=(1 #3=(a b #1#) #1# 4 5) => #2=(1 (a b #2#) #2# 4 5)?
<phoe> _death: the (4 5) can be shared
<_death> right
<phoe> (a b) too
<phoe> since it doesn't cause a cycle to happen
<phoe> it's a "leaf", in a way
<_death> in my first example yes (hence #3#) but in my second example?
thomaslewis has joined #commonlisp
<phoe> oh, second example - yes, (a b #1#) needs to be copied
thomaslewis has left #commonlisp [#commonlisp]
<_death> (my examples should've contained a suitable modification to justify the copying)
citizenandrew has left #commonlisp [#commonlisp]
<phoe> that's the easy part, I know what you meant
waku has quit [Remote host closed the connection]
waku has joined #commonlisp
attila_lendvai has quit [Ping timeout: 250 seconds]
<_death> so you need to determine whether any of the descendants refer to the parents, and if so, replace those parents and so on
<phoe> yes
lagash has quit [Ping timeout: 250 seconds]
random-nick has quit [Ping timeout: 256 seconds]
dec0d3r has joined #commonlisp
<_death> I'm thinking connected components with cut points..
<phoe> OK, that's an idea
thomaslewis has joined #commonlisp
mrmr has joined #commonlisp
<_death> maybe a search can result in a ready made algorithm, but otherwise I'd just try to work it out on paper
<phoe> yes
<phoe> I'll try doing that tomorrow when I'm a bit fresher
<phoe> thanks!
<_death> I'm already spent today ;)
thomaslewis has left #commonlisp [#commonlisp]
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
thomaslewis has joined #commonlisp
mcoll- has quit [Ping timeout: 256 seconds]
<sveit_> Hi. I saw a statement that "displaced arrays perform poorly" here: https://stackoverflow.com/questions/40810796/displaced-multidimensional-arrays-in-common-lisp#comment68846900_40810796 . Is someone here familiar with why this would be true?
<sveit_> The reason I ask is that it is of course fairly simple to just implement an additional object that can store information on the "view" I'd like to provide on a flat array (as suggested in that comment) but why would my user-space implementation be better than what is in the compiler?
<Bike> well, it kind of wouldn't be
<Bike> which is why they usually perform poorly
<sveit_> (in case it's not claer, that link is directly to the comment by someone named Dan Robertson that has the statement i'm confused about)
<Bike> so the problem is, say we have (aref a ...) in the code. if the compiler knows a is NOT displaced, that's pretty straightforward - bounds check and a memory read
<Bike> but if it could be displaced, it has to compile in a check for that, and then code to loop through displacements to get the underlying array
<Bike> with what the comment describes, you'd have one simple vector which can be accessed quickly, and then you just briefly compute the index you actually want
<mfiano> Implementations just don't optimize everything they could.
<mfiano> On SBCL at least, bounds checking occurs on both
<sveit_> Bike: i think you have revealed that I don't understand what array displacement means :) I thought it was exactly what you described in your last statement: a backing vector and some new procedure for computing indices
<Bike> sveit_: the trick is that you can displace to another array that is itself displaced
igemnace has joined #commonlisp
<sveit_> Bike: sure, but doesn't the procedure "close" on itself? meaning if A0 is the original array, A1 is displaced to A0, and A2 is displaced to A1, can't the implementation just treat A2 as displaced to A0?
<Bike> no, because the array-displacement function allows you get at the underlying array
<Bike> clhs array-displacement
<Bike> and, for example, if A1 is adjusted, A2 needs to reflect that adjustment, even if A0 itself has not changed
<sveit_> Bike: ah, thank you very much, this makes a lot more sense now.
<Bike> think the standards committee should have put a little more thought into this thing, honestly
<Catie> Adjusting a displaced array is something they actually put a decent bit of thought into, there's an issue writeup about it
lagash has joined #commonlisp
<Bike> sure, i mean it all works, just not very well.
<Catie> Oh well. Yeah okay, hard to argue with that
<Bike> something like a flat array view might have been both useful and efficient.
thomp has joined #commonlisp
<Catie> Like row-major-aref, but for displacement purposes?
<Bike> no, i mean instead of having displaced arrays like they exist, having a more limited construct that can't get recursive
<mfiano> Wish we had conformal displacement
Oladon has quit [Quit: Leaving.]
kevingal has joined #commonlisp
tanners has quit [Ping timeout: 256 seconds]
tanners has joined #commonlisp
phadthai_ is now known as phadthai
<aeth> there's no incentive to optimize displaced arrays because nobody uses displaced arrays... because they're not optimized
<aeth> the idiomatic way of thinking is start/end indices and almost everything in the standard library has it, as well as any well-written third-party library
rgherdt has quit [Ping timeout: 240 seconds]
gaqwas has joined #commonlisp
<Bike> i mean, how would you optimzie displaced arrays
<Bike> given that, in general, you have this indefinite-length chain of displacements to navigate
<aeth> if the problem is the function ARRAY-DISPLACEMENT, and someone really wanted to optimize displaced arrays, couldn't they just optimize them if ARRAY-DISPLACEMENT cannot possibly show up in the program?
<aeth> couldn't really do that in current implementations, but maybe in a conforming one
<Bike> did you read the message i wrote after that one
<_death> Bike: what about keeping both the immediate displacement and the farthest one possible, and recomputing the latter when needed
<Bike> yeah i guess you could have each array maintain weak backpointers to every array that's displaced to it
<Bike> to trigger the recomputation