jackdaniel 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> | Pastebin: <https://plaster.tymoon.eu/>
inline_ has joined #commonlisp
pve has quit [Quit: leaving]
rgherdt has quit [Remote host closed the connection]
inline__ has quit [Ping timeout: 268 seconds]
inline__ has joined #commonlisp
inline_ has quit [Ping timeout: 252 seconds]
speskk has joined #commonlisp
speskk has joined #commonlisp
speskk has quit [Changing host]
peterhil has joined #commonlisp
inline_ has joined #commonlisp
pdietz has joined #commonlisp
<pdietz> I'm imagining a search algorithm that modifies the natural language input to ChatGPT until the generated code is correct.
<pdietz> Also, I wonder if I could use ChatGPT to generate test cases for Common Lisp.
inline__ has quit [Ping timeout: 252 seconds]
sloanr has quit [Ping timeout: 268 seconds]
perrierjouet has joined #commonlisp
random-nick has quit [Ping timeout: 252 seconds]
inline__ has joined #commonlisp
inline_ has quit [Ping timeout: 272 seconds]
inline_ has joined #commonlisp
<gilberth> pfdietz: I asked it to write tests for NCONC and it tests that the arguments are not modified. <http://clim.rocks/gilbert/chatgpt-nconc-test.txt> And I find the test for concatenating mixed types hilarious.
<pjb> Yeah, useless.
<pjb> But anyways, it's idiotic. Those models don't reason.
inline__ has quit [Ping timeout: 272 seconds]
<hayley> All but #3 are undefined behaviour by modifying literals?
<gilberth> As I keep saying. ChatGPT has no clue what it writes about just like a journalist.
inline__ has joined #commonlisp
<gilberth> hayley: The second test case contradicts every other. Or do you see a SETQ around NCONC?
<hayley> Now that you mention it.
<gilberth> How can list1 magically be the concatenation, when it may not be modified as ChatGPT says?
inline_ has quit [Ping timeout: 272 seconds]
inline_ has joined #commonlisp
inline__ has quit [Ping timeout: 260 seconds]
inline__ has joined #commonlisp
inline_ has quit [Ping timeout: 268 seconds]
inline_ has joined #commonlisp
inline__ has quit [Ping timeout: 268 seconds]
inline__ has joined #commonlisp
<gilberth> Did you know that STRING-EQUAL takes a :RADIX argument? <http://clim.rocks/gilbert/chatgpt-string-equal-2.txt> I am surprised.
<Bike> loving the completely worthless examples
<gilberth> Somehow ChatGPT never contradicts you. Maybe I should have asked for :RADIX1 and :RADIX2. Maybe (string-equal "ff" "255" :radix1 16 :radix2 10) => T ?
inline_ has quit [Ping timeout: 268 seconds]
<Bike> see, now that would be perfectly logical.
inline_ has joined #commonlisp
dtman34 has quit [Ping timeout: 260 seconds]
inline__ has quit [Ping timeout: 272 seconds]
dtman34 has joined #commonlisp
inline__ has joined #commonlisp
inline_ has quit [Ping timeout: 252 seconds]
inline_ has joined #commonlisp
inline__ has quit [Ping timeout: 268 seconds]
ym has quit [Ping timeout: 268 seconds]
inline_ has quit [Ping timeout: 268 seconds]
chrcav has joined #commonlisp
speskk has quit [Ping timeout: 252 seconds]
eddof13 has joined #commonlisp
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<hayley> It's very happy to agree with things if you sound confident, and it's also very happy to be confident too. Like inventing a WHILE special form in Common Lisp code.
<hayley> For some X in "can you do X?" it will tell you why you can't, but if you come up with some Y that justifies X in "I'm doing Y, do X" it'll follow along regardless of the quality of Y.
azimut has quit [Ping timeout: 255 seconds]
asarch has joined #commonlisp
akoana has quit [Quit: leaving]
akonai has quit [Ping timeout: 252 seconds]
akonai has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
akonai has quit [Ping timeout: 252 seconds]
jrm has quit [Remote host closed the connection]
jrm has joined #commonlisp
akonai has joined #commonlisp
akonai has quit [Ping timeout: 268 seconds]
ttree_ has quit [Quit: Leaving]
ttree has joined #commonlisp
akonai has joined #commonlisp
asarch has quit [Quit: Leaving]
<Spawns_Carpeting> Hello. I am attempting to package some of the "must have" CL libraries for myself and possibly others on gentoo, and right now I am on the pattern matching library trivia. I am a little confused on how to go about this, I see a bunch of systems defined, such as trivia, trivia.trivial, trivia.balland2006 trivia.level0 etc. I am not really sure how I am supposed to go about this
<Spawns_Carpeting> also i am having a hard time figuring what dependencies this thing has
akonai has quit [Ping timeout: 255 seconds]
<aeth> Spawns_Carpeting: for the second part, that's (asdf:system-depends-on (asdf:find-system '#:name))
Oddity has quit [Ping timeout: 252 seconds]
<aeth> unfortunately, it's not recursive
<aeth> so e.g. for #'trivia you just get ("trivia.balland2006")
<aeth> and for that you get ("trivia.trivial" "type-i" "iterate" "alexandria")
<aeth> so you just have to keep walking through and remove duplicates
akonai has joined #commonlisp
<Spawns_Carpeting> I think i got it now. it looks like i need closer-mop iterate type-i lisp-namespace and alexandria
akonai has quit [Ping timeout: 268 seconds]
<Spawns_Carpeting> i take it trivia is pretty widely used, is this correct?
aartaka has joined #commonlisp
akonai has joined #commonlisp
ttree has quit [Read error: Connection reset by peer]
azimut has joined #commonlisp
akonai has quit [Ping timeout: 255 seconds]
aartaka has quit [Ping timeout: 272 seconds]
aartaka has joined #commonlisp
akonai has joined #commonlisp
akonai has quit [Ping timeout: 255 seconds]
igemnace has joined #commonlisp
akonai has joined #commonlisp
waleee has quit [Ping timeout: 264 seconds]
akonai has quit [Ping timeout: 252 seconds]
azimut_ has joined #commonlisp
igemnace has quit [Remote host closed the connection]
azimut has quit [Ping timeout: 255 seconds]
shka has joined #commonlisp
tibfulv_ has quit [Remote host closed the connection]
tibfulv has joined #commonlisp
bilegeek has joined #commonlisp
<hayley> I use it frequently enough.
akonai has joined #commonlisp
akonai has quit [Ping timeout: 252 seconds]
akonai has joined #commonlisp
enzuru has quit [Quit: ZNC 1.8.2 - https://znc.in]
enzuru has joined #commonlisp
akonai has quit [Ping timeout: 265 seconds]
akonai has joined #commonlisp
akonai has quit [Ping timeout: 252 seconds]
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
paule320 has joined #commonlisp
<paule320> hello, and good morning
<paule320> how can i compare two list's ?
<paule320> i have tried this: https://dpaste.com/BUPAF248S
<paule320> but the last line, give me: nil
pjb has quit [Ping timeout: 256 seconds]
perrierjouet has quit [Quit: WeeChat 3.7.1]
<paule320> okay, i get it working
<paule320> (print (list= '(ich habe) *i1* :test #'equal)) ; instead
<paule320> (print (list= '(ich habe) '(*i1*) :test #'equal))
<paule320> (print (list= '(ich habe) *i1* :test #'equal)) => T
<paule320> like expected
akonai has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
pve has joined #commonlisp
waleee has joined #commonlisp
akonai has quit [Ping timeout: 252 seconds]
pjb has joined #commonlisp
waleee has quit [Ping timeout: 260 seconds]
kaskal has quit [Quit: ZNC - https://znc.in]
scymtym has joined #commonlisp
akonai has joined #commonlisp
kaskal has joined #commonlisp
Lord_of_Life_ has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 260 seconds]
Lord_of_Life_ is now known as Lord_of_Life
_cymew_ has joined #commonlisp
aartaka has quit [Ping timeout: 265 seconds]
cercopith_ has joined #commonlisp
aartaka has joined #commonlisp
cercopith__ has quit [Ping timeout: 272 seconds]
kathe has joined #commonlisp
<kathe> hello. :)
<kathe> there was a project which used to produce a web front-end using common lisp.
<kathe> does anyone here know the name of that project and its repository?
random-jellyfish has joined #commonlisp
<kathe> i think the web front-end was generated dynamically using 'clim'.
<Duuqnd> Could someone do me a quick favor? I need to know if PARSE-NAMESTRING on SBCL running on Windows will properly parse a normal Windows path (with backslashes and all) but I don't have a Windows machine available at the moment.
<beach> kathe: I don't know the answer, but I typed "web front end common lisp" to the Google search engine and got several interesting-looking links.
<paule320> kathe: picolisp have some features
<paule320> hello beach
<kathe> hi beach.
<kathe> beach: i did follow your advice, but ain't able to find that project.
<kathe> it would be super cool if mcclim was given a web front-end.
<phoe> kathe: clog maybe
<kathe> hi phoe.
<phoe> hello kathe
<kathe> phoe: yeah, clog looks *very* promising.
<beach> With respect to McCLIM, I know gilberth wrote the Closure web browser.
<paule320> kathe: what do you need ? database ?
<kathe> paule320: i needed to "know" if there's a web front-end for mcclim.
<paule320> ok
<paule320> is there a mysql database package available for sbcl ?
bilegeek has quit [Quit: Leaving]
<kathe> bye everyone.
kathe has quit [Quit: Leaving]
<Mrtn[m]> kathe: Good afternoon.
<splittist> Duuqnd: yes afaict
<Duuqnd> Thanks
<splittist> Duuqnd: so that if I (parse-namestring "c:\\Users\\John\\quicklisp\\") I get a pathname st. pathname-name is NIL, -device is "c" and -directory is (:absolute "Users" "John" "quicklisp"), for example. Just to be thorough (:
<paule320> how can i catch the exception, that is throw, when quicklisp is already installed ?
<splittist> how can you handle the condition that is signaled? What condition? Signaled in what circumstances? What do you want to do when it is signaled?
* splittist channels beach
<paule320> #simple-error
<paule320> (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SIMPLE-ERROR "Quicklisp has already been installed. Load ~S instead."
akonai has quit [Ping timeout: 252 seconds]
akonai has joined #commonlisp
<mfiano> splittist: beach will not respond to this character, like many others.
<mfiano> splittist: Oh hey, I sent you a /query yesterday. Did you see it?
<paule320> mfiano: i would bid you, "to not" spread flame wars
random-jellyfish has quit [Quit: Client closed]
<mfiano> paule320: You did not graduate from #clschool after many years of ignoring advice, and now you come to #commonlisp because you were banned from there, talking about inferior "thrown exceptions" trying to confuse new people? I wouldn't be surprised if one of the operators here doesn't take too kindly to that.
<paule320> you will not fair
<mfiano> It is not under my control.
<paule320> why did you make those statements ?
rainthree has joined #commonlisp
<mfiano> I think I answered that. But this language barrier is exhausting, so excuse me.
Shinmera has quit [Quit: WeeChat 2.8]
Shinmera has joined #commonlisp
varjag has joined #commonlisp
paule320 was banned on #commonlisp by Shinmera [paule320!*@*]
paule320 was kicked from #commonlisp by Shinmera [paule320]
inline has joined #commonlisp
<Shinmera> It is under my control though.
<mfiano> As was made clear the other day, they use a deep learning service to translate their german to english, which does a horrible job, often resulting in some distorted semantic opposite of the input. SO talking to this fellow is more or less bot by proxy.
<Shinmera> Happily these days they could just talk to chatgpt instead :)
<mfiano> :)
inline_ has joined #commonlisp
inline has quit [Ping timeout: 252 seconds]
inline__ has joined #commonlisp
inline_ has quit [Ping timeout: 252 seconds]
random-nick has joined #commonlisp
inline_ has joined #commonlisp
akonai has quit [Ping timeout: 260 seconds]
inline__ has quit [Ping timeout: 255 seconds]
inline has joined #commonlisp
aartaka has quit [Ping timeout: 272 seconds]
aartaka has joined #commonlisp
inline_ has quit [Ping timeout: 268 seconds]
Lycurgus has joined #commonlisp
shka has quit [Ping timeout: 252 seconds]
_cymew_ has quit [Ping timeout: 272 seconds]
tane has joined #commonlisp
tane has quit [Changing host]
tane has joined #commonlisp
Lycurgus has quit [Quit: Exeunt: personae.ai-integration.biz]
akonai has joined #commonlisp
Shareni has joined #commonlisp
tyson2 has joined #commonlisp
jmdaemon has quit [Ping timeout: 260 seconds]
cage has joined #commonlisp
iar has joined #commonlisp
iar has left #commonlisp [#commonlisp]
iar has joined #commonlisp
iar has left #commonlisp [#commonlisp]
tyson2 has quit [Remote host closed the connection]
akonai has quit [Ping timeout: 272 seconds]
inline_ has joined #commonlisp
ym has joined #commonlisp
perrierjouet has joined #commonlisp
inline has quit [Ping timeout: 268 seconds]
lottaquestions has quit [Remote host closed the connection]
lottaquestions has joined #commonlisp
inline has joined #commonlisp
akonai has joined #commonlisp
inline_ has quit [Ping timeout: 252 seconds]
inline_ has joined #commonlisp
akonai has quit [Ping timeout: 252 seconds]
inline has quit [Ping timeout: 252 seconds]
inline__ has joined #commonlisp
Shareni has quit [Ping timeout: 252 seconds]
inline_ has quit [Ping timeout: 268 seconds]
akonai has joined #commonlisp
haoms has joined #commonlisp
rgherdt has joined #commonlisp
morganw has joined #commonlisp
haoms is now known as McParen
tane has quit [Ping timeout: 252 seconds]
inline_ has joined #commonlisp
azimut_ has quit [Ping timeout: 255 seconds]
azimut has joined #commonlisp
inline__ has quit [Ping timeout: 260 seconds]
akonai has quit [Ping timeout: 260 seconds]
aartaka has quit [Ping timeout: 252 seconds]
aartaka has joined #commonlisp
akonai has joined #commonlisp
akonai has quit [Ping timeout: 252 seconds]
tane has joined #commonlisp
tane has joined #commonlisp
akonai has joined #commonlisp
inline has joined #commonlisp
McParen has left #commonlisp [#commonlisp]
inline_ has quit [Ping timeout: 260 seconds]
rainthree has quit [Ping timeout: 272 seconds]
varjag has quit [Ping timeout: 272 seconds]
aartaka has quit [Ping timeout: 252 seconds]
aartaka has joined #commonlisp
varjag has joined #commonlisp
akonai has quit [Ping timeout: 260 seconds]
doyougnu has joined #commonlisp
inline_ has joined #commonlisp
inline has quit [Ping timeout: 272 seconds]
akonai has joined #commonlisp
<pve> Hi! I was wondering if this is allowed:
<ixelp> proto-dot/proto-dot.lisp at main · pve1/proto-dot · GitHub
<pve> i.e. "passing" a function to a macro like that
<beach> You can pass any object to a macro.
akonai has quit [Ping timeout: 256 seconds]
<pve> beach: thanks, it just looked a little weird
<_death> functions are not externalizable objects, so you'll have trouble
<pve> _death: is it a problem if the function is only used "internally" by the other macro?
<pve> so it never ends up in the final form after macroexpansion is completely done
<_death> I'm not sure
random-nick has quit [Remote host closed the connection]
<phoe> pve: if you are passing literal functions to a macro, this sounds like you might want a function instead
<pve> phoe: that might be
<phoe> it looks like proto-dot can be a function that is called by proto-fdot and proto-dot?
<pve> phoe: proto-dot should also be a macro
<pve> so maybe I need %proto-dot or something, I'm not sure
<phoe> which might be call a function like %proto-dot that actually implements that macro
<phoe> s/be call/call/
<pve> I made a couple of tests yesterday to verify this, since I've *never* done this before:
<phoe> I usually try to keep absolutely everything as functional as I can
<phoe> and use DEFMACRO only on the outermost layer
<pve> phoe: I hear you. Proto-dot is a recursive macro, and it just seemed so easy.
thuna` has joined #commonlisp
<phoe> recursive macros are kind of tempting
<pve> (I'm building my new and improved "dot creation kit" based on the discussion here a while back
<pve> no longer does it provide one single "dot" macro, but instead just offers some tools to build your own, since there are so many different use cases
inline has joined #commonlisp
<pve> also gone is the general "access" functionality
cercopith__ has joined #commonlisp
cercopith_ has quit [Ping timeout: 252 seconds]
inline_ has quit [Ping timeout: 256 seconds]
Shareni has joined #commonlisp
inline_ has joined #commonlisp
inline has quit [Ping timeout: 260 seconds]
inline has joined #commonlisp
akonai has joined #commonlisp
Shareni has quit [Ping timeout: 272 seconds]
inline_ has quit [Ping timeout: 260 seconds]
enzuru has quit [Quit: ZNC 1.8.2 - https://znc.in]
akonai has quit [Ping timeout: 252 seconds]
akonai has joined #commonlisp
enzuru has joined #commonlisp
varjag has quit [Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50)]
aartaka has quit [Ping timeout: 268 seconds]
aartaka has joined #commonlisp
cercopith__ has quit [Remote host closed the connection]
cercopith__ has joined #commonlisp
doyougnu has quit [Ping timeout: 256 seconds]
Guest4001 has joined #commonlisp
enzuru has quit [Quit: ZNC 1.8.2 - https://znc.in]
random-nick has joined #commonlisp
inline_ has joined #commonlisp
ec_ has quit [Remote host closed the connection]
ec_ has joined #commonlisp
inline has quit [Ping timeout: 252 seconds]
Shareni has joined #commonlisp
inline has joined #commonlisp
inline_ has quit [Ping timeout: 252 seconds]
<thuna`> Alright, I tried to figure out what I am trying to make (this is about the binary recipes that I mentioned a while back), and landed on something like this: https://0x0.st/on7h.org. The built-in recipes section isn't a necessary read although it should make what I had in mind a bit clearer.
inline_ has joined #commonlisp
inline has quit [Ping timeout: 268 seconds]
Guest4001 has quit [Quit: Konversation terminated!]
cercopith_ has joined #commonlisp
cercopith__ has quit [Ping timeout: 265 seconds]
rgherdt has quit [Remote host closed the connection]
Shareni has quit [Remote host closed the connection]
inline has joined #commonlisp
enzuru has joined #commonlisp
inline_ has quit [Ping timeout: 272 seconds]
zyni-moe has joined #commonlisp
<Josh_2> Spawns_Carpeting: Why are you doing that? I dont think I've ever used any of the systems in Portage other than sbcl itself
<Josh_2> thuna`: that just 502d me
inline_ has joined #commonlisp
inline has quit [Ping timeout: 272 seconds]
inline has joined #commonlisp
inline_ has quit [Ping timeout: 252 seconds]
zyni-moe has quit [Quit: died]
aartaka has quit [Ping timeout: 252 seconds]
aartaka has joined #commonlisp
ym has quit [Read error: Connection reset by peer]
Mandus has quit [Read error: Connection reset by peer]
Mandus has joined #commonlisp
pdietz has quit [Quit: Client closed]
aartaka has quit [Ping timeout: 268 seconds]
<phoe> okay I have just had some fun with common lisp
<phoe> there's this math sort of puzzle, VIOLIN * 2 + VIOLA = TRIO + SONATA where each letter represents a different decimal digit
<phoe> and I wrote the dumbest possible AMB call to try and find the solution
aartaka has joined #commonlisp
<phoe> it's probably nothing important in the grant scheme of things, but I enjoyed it
Lycurgus has joined #commonlisp
aartaka has quit [Ping timeout: 272 seconds]
cercopith__ has joined #commonlisp
aartaka has joined #commonlisp
<mfiano> Congrats
<mfiano> On both feeling the fun of CL again, and solving it.
cercopith_ has quit [Ping timeout: 272 seconds]
nij- has joined #commonlisp
_cymew_ has joined #commonlisp
igemnace has joined #commonlisp
<_death> cool, I annotated with a similar program
nij- has left #commonlisp [Using Circe, the loveliest of all IRC clients]
<_death> the performance is better because it does constraint propagation
<mfiano> How does screamer handle contradictions exactly?
<phoe> I've re-annotated with an optimized version, speed 3 and zero consing
<phoe> mfiano: contradictions? it backtracks, I assume
inline_ has joined #commonlisp
<mfiano> Right, but knowing when and by how much to backtrack, or when to give up, is an interesting problem with constraint solvers.
Lycurgus has quit [Quit: Exeunt: personae.ai-integration.biz]
<phoe> oh, like that - I see
inline_ has quit [Max SendQ exceeded]
inline_ has joined #commonlisp
inline has quit [Ping timeout: 252 seconds]
<mfiano> Not "knowing", but you know what I mean :) Another bad choice of word today. I am really nailing it.
<phoe> I understood, no problem
<White_Flame> generally speaking (not sure about screamer itself), any time a choice point is created, that's where it backtracks to
<White_Flame> and gives up after there's no choices left to explore
<_death> the (static-ordering #'linear-force) part tells screamer how do perform the backtracking
<mfiano> Aha
inline__ has joined #commonlisp
<thuna`> Josh_2: Really? It works for me
<thuna`> Does this work? https://0x0.st/on7h.org
inline_ has quit [Ping timeout: 272 seconds]
igemnace has quit [Remote host closed the connection]
triffid has quit [Ping timeout: 255 seconds]
triffid has joined #commonlisp
<_death> (well, it tells screamer how to perform the search.. the backtracking is dependency-directed, as opposed to chronological)
rainthree has joined #commonlisp
rainthree3 has joined #commonlisp
rainthree has quit [Ping timeout: 252 seconds]
<mfiano> Ok, put it that way I understand. The latter is hard to deal with (or was for me)
<_death> need to correct myself again (it's been a while).. screamer uses chronological backtracking, though the choice points are determined by that form
<mfiano> Ah. Ok then.
<_death> there was some room for confusion because the screamer paper has a TMS-like example (and one of the authors invented the term) and those tend to have dependency-directed backtracking.. in the end it provides you with some control
johnjaye has joined #commonlisp
<johnjaye> i recall reading in a speech that rms talked about dynamic binding being better for a text editor than lexical binding
<johnjaye> that got me wondering. are there features of lisp that work better or worse for specific things like text editing?
<mfiano> Absolutely, yes.
<mfiano> (to close a very open-ended question)
<Josh_2> thuna`: that second link works thanks
<johnjaye> well. it's customary to provide an example when you affirm something exists. heh
<johnjaye> common lisp has only lexical binding is my belief
<mfiano> What do you mean by lexical binding?
<johnjaye> like, the variable is only accessible in the scope it's defined in i think
<phoe> you are wrong
<johnjaye> or in a closure
<phoe> CL has dynamic binding as well
<johnjaye> oh ok
<_death> and elisp has lexical binding too, nowadays, if you add a line for it
rainthree3 has quit [Ping timeout: 252 seconds]
<johnjaye> yeah. it seems over time elisp has tried to be more and more like common lisp
<johnjaye> or at least incorporate a lot of features
<johnjaye> anyway i'm not sure exactly the speech where he was talking about dynamic binding
<johnjaye> but it had something to do with redefining methods more efficiently
<johnjaye> oh it's still online!
<ixelp> EMACS: The Extensible, Customizable Display Editor - GNU Project - Free Software Foundation
<_death> I bet there were some huge discussions about the pros and cons on emacs-devel mailing list, if you wish to read more about it
<phoe> might be a #lisp thing more than a #commonlisp one maybe
<phoe> since the former has broader scope and topicness
<johnjaye> if you prefer i can move it over
<johnjaye> what i'm confused about is the next section where it says formal parameters cannot replace dynamic scope
<johnjaye> the example is A assigns a value to foo. then calls B which calls C. and it passes foo as a parameter
<phoe> (defun b (foo bar) ...)
<johnjaye> but this doesn't work if B can't be changed to take foo as a parameter.
<johnjaye> "To use explicit argument passing would require adding a new argument to B, which means rewriting B and everything that calls B."
<phoe> if you control functions A and C, and you need to pass a parameter from A to C through B, then you're in tough luck because the lambda list of B is defined to consist only of two arguments
<phoe> but you can do (defun a (...) (let ((*baz* ...)) (b ...))) and then (defun c (...) (... *baz*))
<phoe> where *BAZ* is a dynavar you control
<johnjaye> ok. that's what it's saying though, you have to use dynamic scope
<phoe> yes, *BAZ* is a dynamic variable
<phoe> its scope is dynamic
<johnjaye> but i guess if you have it then it's fine. this might be more of a problem with scheme then where there is no dynamic scope
<phoe> this technique is actually used in Common Lisp as well, in order to work around exactly the same scenario - e.g. Eclector, a custom implementation of CL:READ, accepts additional arguments that cannot be passed through CL:READ itself because the lambda list for it is pretty fixed
<johnjaye> so something uses cl: read normally instead uses eclector ?
<phoe> so the trick is to bind a dynamic variable around calls to CL:READ and have Eclector grab the value once our custom CL:READ calls Eclector
<phoe> at which point you can customize the ways in which CL:READ functions
<johnjaye> oh ok. so you're not redefinign cl:read
<phoe> no no, we kind of are redefining it
<phoe> so we can use Eclector instead of the implementation-provided reader
<johnjaye> but you just passed around a dynvar
<phoe> but we need a dynamic variable in order to configure the behavior of CL:READ
<phoe> because CL:READ has a non-extensible parameter list
<johnjaye> "Eclector, a custom implementation of CL:READ"
<phoe> (read &optional stream eof-error-p eof-value recursivep)
speskk has joined #commonlisp
speskk has quit [Changing host]
speskk has joined #commonlisp
<phoe> no way for providing keywords or other optional arguments
<johnjaye> well. what i meant is if you call code that uses CL:READ, do you want that to instead use eclector?
<johnjaye> or is it more you're taking params that would normally go to cl:read and giving them to eclector
<phoe> yes, that's the whole point of using a different Lisp reader for the systems
cage has quit [Remote host closed the connection]
<johnjaye> ok
<phoe> if you want to use eclector as the system Lisp reader, you want all calls to CL:READ to go to Eclector
<johnjaye> ok. but how do you do that in cl
<phoe> implementation-dependent
<phoe> on some implementations it's enough to "unprotect" the CL package if necessary and then change the fdefinition of CL:READ
<phoe> others might behave differently
<johnjaye> sbcl you mean? i thought sbcl was the main one
<johnjaye> and like the gnu one. gnu clisp
<phoe> I actually don't know the guts and details since I never tried or needed to override sbcl's reader with Eclector
<johnjaye> ah ok. well it's good to know this isn't just something hypothetical
inline has joined #commonlisp
<johnjaye> or restricted to emacs
inline has quit [Remote host closed the connection]
inline has joined #commonlisp
<mfiano> johnjaye: most Scheme's have dynamic scope too.
<_death> my opinion is that special variables are a must-have for a sane interactive language experience
<mfiano> Oddly enough, they are called parameter objects.
inline__ has quit [Ping timeout: 260 seconds]
<johnjaye> well i was taught scheme is only lexically scoped
<johnjaye> so maybe you are making a 500 IQ argument there
<mfiano> Scheme without any extensions is not really much of a language, so that is true. But this is off-topic.
<phoe> you can implement dynamic scope using mutable lexical scope and dynamic-wind
<phoe> or unwind-protect
<_death> also need to take care using thread-local storage
<mfiano> johnjaye: Most Schemes implement a set of SRFI's, which AFAIU, are extra extensions to the base specification. SRFI 39 is the particular one to check if your Scheme dialect purports to conform to.
<johnjaye> i see. there's nothing like that in lisp?
cage has joined #commonlisp
<johnjaye> like, lisp extension #123?
<phoe> CDR, but it's kind of a dead thing
<mfiano> In Lisp? You mean in Common Lisp?
cage has quit [Client Quit]
<johnjaye> yeah. like extensions to the language
<phoe> compatibility libraries, but these are named rather numbered
<mfiano> No. The standard is our holy book.We mostly rely on conventions and defacto standards to progress the language further. Sometimes even, as with PLN, nearly every implementation will jump on board.
<johnjaye> ah i see
aartaka has quit [Ping timeout: 272 seconds]
inline_ has joined #commonlisp
aartaka has joined #commonlisp
inline_ has quit [Remote host closed the connection]
inline_ has joined #commonlisp
inline has quit [Ping timeout: 272 seconds]
inline__ has joined #commonlisp
inline has joined #commonlisp
inline has quit [Max SendQ exceeded]
inline_ has quit [Ping timeout: 272 seconds]
inline__ has quit [Ping timeout: 252 seconds]
<Spawns_Carpeting> Josh_2: I try to not use package managers other than the system package manager. I even manage my emacs packages with portage!
<phoe> I have no idea what's the state of lisp systems outside quicklisp, but debian is a mess
<phoe> maybe portage is better
<Spawns_Carpeting> I don't really like quicklisp especially because it doesn't support downloading over https which is absolutely essential to me
<Spawns_Carpeting> At least it didn't when I looked into it
<yitzi> Use clpm. It does https as I recall
<Spawns_Carpeting> phoe: wrt portage, not great. There's only a handful of systems in the main Gentoo repo. There is a lisp overlay that has a lot more but it's mostly not updated in a long time. Packaging the stuff myself is pretty easy though so long as I can figure out what the dependencies of a system are and where to find them
<phoe> if anything, you should be able to parse the https://github.com/quicklisp/quicklisp-projects/ structure to find most dependencies
<ixelp> GitHub - quicklisp/quicklisp-projects: Metadata for projects tracked by Quicklisp.
<Spawns_Carpeting> That's actually very helpful! I was looking for something like that
inline has joined #commonlisp
<Spawns_Carpeting> Thank you
inline has quit [Max SendQ exceeded]
inline has joined #commonlisp
<Spawns_Carpeting> Another thing that has been helpful is looking at the guix repo. They have a ton of lisp systems packaged and the package definition includes a url and some other metadata like dependencies
inline_ has joined #commonlisp
thuna` has quit [Ping timeout: 272 seconds]
_cymew_ has quit [Ping timeout: 252 seconds]
inline has quit [Ping timeout: 260 seconds]
inline has joined #commonlisp
inline_ has quit [Ping timeout: 272 seconds]
thuna` has joined #commonlisp
mrcom has quit [Ping timeout: 268 seconds]
tyson2 has joined #commonlisp
inline_ has joined #commonlisp
ec_ has quit [Ping timeout: 255 seconds]
inline has quit [Ping timeout: 272 seconds]
aartaka has quit [Ping timeout: 272 seconds]
ec_ has joined #commonlisp
inline_ is now known as Inline
inline_ has joined #commonlisp
Inline has quit [Killed (molybdenum.libera.chat (Nickname regained by services))]
inline_ is now known as Inline
inline_ has joined #commonlisp
ec_ has quit [Remote host closed the connection]
Inline has quit [Ping timeout: 255 seconds]
ec_ has joined #commonlisp
pranavats has left #commonlisp [Disconnected: Hibernating too long]
random-nick has quit [Ping timeout: 272 seconds]
thuna` has quit [Remote host closed the connection]
pranavats has joined #commonlisp
random-nick has joined #commonlisp
szkl has quit [Quit: Connection closed for inactivity]
ec_ has quit [Ping timeout: 255 seconds]
tyson2 has quit [Ping timeout: 268 seconds]
khrbt has joined #commonlisp
ec_ has joined #commonlisp
jmdaemon has joined #commonlisp
speskk has quit [Ping timeout: 272 seconds]
skeemer has quit [Remote host closed the connection]
skeemer has joined #commonlisp
borodust has quit [Remote host closed the connection]
<anddam> I just started Practical Common Lisp
<anddam> so far it is awesome
<pjb> ok
<anddam> just had to report that
<phoe> anddam: congrats and hope you have fun
<anddam> thx
Alfr has quit [Quit: Leaving]
<anddam> lisp in a box
<anddam> lisp in a box "news" seem pretty out of date, is a distribution like lispstick preferable for a newbie?
<phoe> portacle
<anddam> (fat fingered while typing)
<anddam> thanks again
inline__ has joined #commonlisp
inline_ has quit [Ping timeout: 272 seconds]
Alfr has joined #commonlisp
<anddam> oh wow, that emacs is *not* following HiDPI
borodust has joined #commonlisp
tane has quit [Quit: Leaving]
akoana has joined #commonlisp
inline_ has joined #commonlisp
inline__ has quit [Ping timeout: 272 seconds]
inline__ has joined #commonlisp