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/>
pfdietz has joined #commonlisp
<Gojira> ah, finally. thanks.
<mfiano> aeth: MIT LOOP is non-conforming in this regard, which most LOOPs are based on.
<Gojira> how do I tell return to return the list from collect? or is that still returned even when using finally?
<Gojira> (return "collect result" count)
<mfiano> collect x into y finally (return y)
<mfiano> finally doesn't do anything but what you tell it to do last, which doesn't have to call return
kaskal has quit [Ping timeout: 256 seconds]
Fare has joined #commonlisp
khrbtxyz has quit [Ping timeout: 260 seconds]
tyson2 has quit [Read error: Connection reset by peer]
tyson2 has joined #commonlisp
khrbtxyz has joined #commonlisp
donleo has quit [Ping timeout: 245 seconds]
pfdietz has quit [Quit: Client closed]
pfdietz has joined #commonlisp
josrr has quit [Remote host closed the connection]
Lord_of_Life has quit [Ping timeout: 256 seconds]
Lord_of_Life has joined #commonlisp
bilegeek has joined #commonlisp
random-nick has quit [Ping timeout: 260 seconds]
kenanb has quit [Remote host closed the connection]
<Gojira> something which I don't understand is SBCL is telling me "variable Y is definied by never used" I have 'collect element into y finally (return (values y))' any idea what this warning means?
rgherdt has quit [Ping timeout: 255 seconds]
NicknameJohn has joined #commonlisp
NotThatRPG has quit [Remote host closed the connection]
NotThatRPG has joined #commonlisp
akoana has quit [Quit: leaving]
bilegeek has quit [Ping timeout: 268 seconds]
<pfdietz> Seems to work fine for me.
<pfdietz> Why the 'values', btw?
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
meritamen has joined #commonlisp
NotThatRPG has joined #commonlisp
davidt has joined #commonlisp
davidt has quit [Ping timeout: 260 seconds]
jmdaemon has joined #commonlisp
Jach has quit [Ping timeout: 252 seconds]
Fare has quit [Ping timeout: 255 seconds]
Jach has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
NicknameJohn has quit [Ping timeout: 246 seconds]
<Gojira> oh, I had several other values than just y.
scymtym has quit [Ping timeout: 256 seconds]
scymtym has joined #commonlisp
Fare has joined #commonlisp
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
NotThatRPG has joined #commonlisp
kevingal_ has quit [Ping timeout: 260 seconds]
NotThatRPG has quit [Client Quit]
dnhester26 has joined #commonlisp
rtypo has quit [Ping timeout: 260 seconds]
molson has quit [Remote host closed the connection]
molson has joined #commonlisp
kristjansson has joined #commonlisp
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
Fare has quit [Ping timeout: 245 seconds]
bubblegum has joined #commonlisp
<paulapatience> Are you using y outside of the loop?
<paulapatience> Oh wait, that makes no sense, never mind.
<paulapatience> Unless you have a y outside the loop, of course. It is hard to say without a larger example.
<beach> I suspect there is a (let ((y ...)) outside the loop.
meritamen has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
meritamen has joined #commonlisp
kristjansson has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
kristjansson has joined #commonlisp
waleee has quit [Ping timeout: 245 seconds]
Ellenor has joined #commonlisp
kristjansson has quit [Client Quit]
hayley has quit [Read error: Connection reset by peer]
meritamen has quit [Quit: It's time to bed. ZZZzzz...]
NicknameJohn has joined #commonlisp
hayley has joined #commonlisp
hayley has quit [Changing host]
hayley has joined #commonlisp
pfdietz has quit [Ping timeout: 250 seconds]
<beach> The new interview with drmeister_ is interesting.
ym has joined #commonlisp
<drmeister_> Did anything particular jump out at you?
<beach> Hard to say...
<beach> You mentioned the comfortable development environment, but also admitted you hadn't studied modern IDEs
<beach> The thing is that, for some time now, I more and more see the shortcomings of our development environment.
Gleefre has quit [Remote host closed the connection]
<beach> So I want to work on improving things in that domain.
Gleefre has joined #commonlisp
<beach> I *am* working on it.
<beach> It was good you emphasized how slow Python is.
<drmeister_> Agreed. I'd love better autocompletion for Common Lisp editing. I'd love something that could provide a list of function names based on arguments. Type something like `(<tab> arg1 arg2)` and it provides function names that would work with arg1 and arg2.
<beach> That, and just catching obvious syntax errors without the need to compile the file.
decweb has quit [Ping timeout: 252 seconds]
<beach> With my seemingly increasing dyslexia, I make many typos that I don't see, so just having the editor flag a variable that does not exist would be a great help.
<beach> And I think bike mentioned the annoying situation where you compile something, fix the reported errors, and then compile again, only to discover new errors.
<beach> But anyway, it was good to get the message about Common Lisp out there.
<drmeister_> I'm struggling to write code where almost every function call is one that I wrote and named.
<beach> What's the struggle? That you can't remember the names?
<drmeister_> It's difficult to remember all the names because I'm using them as fast as I'm writing them. That's why I'd like better autocompletion.
<beach> Yes, I see.
<drmeister_> And I rename them and throw them away about as fast as I write them.
NicknameJohn has quit [Ping timeout: 255 seconds]
<drmeister_> And remembering what generic functions apply to what variables.
<beach> I understand.
<beach> Such completion might require type inference or type declarations.
<beach> The type inference could be simple inside a method that specializes the variables, of course.
<drmeister_> "Will provide type declarations for autocompletion".
<beach> I'll have to give such a feature some more thought.
<beach> It is clear that the editor needs to apply at least the first pass of a compiler, and it has to do it at typing speed.
<beach> But I think we can do that.
<beach> Not yet, of course, but I think I know how to do it.
<drmeister_> And it would have to do it on incomplete code <brrr>.
<beach> Indeed.
<beach> What will help is the following observation: When you edit a file, anything preceding the point of edit won't be processed again (with a few exceptions), so the environment produced by processing preceding forms will remain the same. And anything following the editing window won't bee seen by the user, so processing it can wait until it becomes visible.
<beach> And given how fast we can invoke the first pass of a compiler, it will take very little time to process whatever needs to be processed at typing speed.
<drmeister_> Bike and karlosz' bytecode compiler is very fast.
<beach> Sure.
<beach> But we won't need code generation at this level.
<beach> .. with the exception of MACROLET.
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
<drmeister_> How are you writing code these days? Are you using emacs?
<beach> Yes, I am still using Emacs and SLIME. But apparently the pure editing experience of Second Climacs is now approaching that of Emacs. We still have a long way to go though. Indentation is not yet great, for instance.
<drmeister_> I've switched to evil-mode in emacs. It's less strain on my fingers. But I have trouble keeping track of what mode each buffer is in.
<beach> I don't have any problems with my hands, which is kind of surprising, I guess.
<beach> Is evil-mode something that resembles VIM?
<drmeister_> I figured out how to color code the mode line based on if the buffer is in normal mode (red) or insert mode (green).
<drmeister_> Yes, evil-mode resembles VIM.
notzmv has quit [Ping timeout: 256 seconds]
<drmeister_> I spent 20 years working in VIM, 10 years working in emacs and then switched to evil-mode.
<drmeister_> Keeps me on my toes.
<beach> Heh, I can imagine.
rainthree has joined #commonlisp
<drmeister_> I'm doing all my development in slime with clasp - I think we support almost all slime functions now.
<beach> Sounds good.
kenanb has joined #commonlisp
<beach> drmeister_: Also good to know that your company is making progress.
<drmeister_> This is the year that I hope things take off. I think we stand a good chance of making it happen.
<drmeister_> We are starting development of therapeutics.
<beach> Congratulations!
<drmeister_> Not yet. Save it for next year.
<drmeister_> Let's make a date - I'll see you here in a year. :-)
<beach> Perfect!
dcb has quit [Quit: Connection closed for inactivity]
<drmeister_> FYI I did the podcast more out of curmudgeonly annoyance than anything else. I listened to a couple of the new language podcasts on Developer Voices and the breathless excitement from the developers of their wonderful language features that we already have annoyed me. So I contacted the host and suggested to do an interview. I didn't say a tenth of what I wanted to say. I just let the conversation go the way it seemed to
<drmeister_> want to go.
<beach> That seemed plausible to me. I looked briefly at the existing interviews, and it made me as annoyed as you probably were.
notzmv has joined #commonlisp
NicknameJohn has joined #commonlisp
shka has joined #commonlisp
<drmeister_> Good night.
<beach> Good night drmeister_.
NicknameJohn has quit [Read error: Connection reset by peer]
<kenanb> beach: I suspect the heuristic "anything preceding the point of edit won't be processed again" is infeasible. I would prefer an IDE/editor starting without any heuristics, and just empower me to tell it which parts of the file to consider "frozen" at the moment. In my mind, the idea is similar to "narrowing a region" in emacs.
<beach> I expressed that wrong.
<beach> I meant, when you type a character at some point in the buffer. Whatever top-level expressions precede the one you are editing won't need to be processed again as a result of typing that character.
<beach> Because an analysis that starts from the beginning of the buffer will yield the same result if done again.
<beach> kenanb: I have great hopes that we will obtain good performance without any such manual intervention.
<kenanb> I see. Yeah it makes sense in that context.
<beach> So we just save the state of the (incremental) global environment after each top-level expression has been processed, and we can restart the analysis using the environment produced by analyzing preceding top-level expressions.
mgl has joined #commonlisp
<beach> And we can stop (with few exceptions) when the first top-level expression is beyond what the user can see.
Pixel_Outlaw has quit [Remote host closed the connection]
mgl has quit [Ping timeout: 255 seconds]
mgl has joined #commonlisp
mgl has quit [Ping timeout: 256 seconds]
donleo has joined #commonlisp
bubblegum has quit [Ping timeout: 252 seconds]
Lycurgus has quit [Quit: leaving]
monospod has joined #commonlisp
luis5 has quit [Ping timeout: 268 seconds]
bubblegum has joined #commonlisp
olnw has joined #commonlisp
dinomug has quit [Remote host closed the connection]
Aesth has joined #commonlisp
azimut has joined #commonlisp
Kyuvi has joined #commonlisp
<olnw> dnhester26: Hello. On the page 'About the Technical Reference', it says you used the dpANS3R+ source. I gather that this term refers to dpANS3, with the changes from dpANS3R applied to it. Am I correct? If so, I think you should explain this on the aforementioned webpage.
bubblegum has quit [Ping timeout: 260 seconds]
varjag has joined #commonlisp
_cymew_ has joined #commonlisp
bubblegum has joined #commonlisp
szkl has joined #commonlisp
NicknameJohn has joined #commonlisp
cage has joined #commonlisp
dajole has quit [Quit: Connection closed for inactivity]
varjag has quit [Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50)]
dino_tutter has joined #commonlisp
dcb has joined #commonlisp
igemnace has joined #commonlisp
pve has joined #commonlisp
attila_lendvai has joined #commonlisp
yates_work has joined #commonlisp
<yates_work> is there a well-supported svg library for sbcl?
<yates_work> s/sbcl/common-lisp
olnw has quit [Remote host closed the connection]
olnw has joined #commonlisp
<jcowan> Shinmera: If you want to win bih (as in really big), find a way to defeat the status-quo fallacy
<Shinmera> I was making a reference to RPG's essay.
<jcowan> Yup.
<Shinmera> Anyway, so far I haven't even figured out how to win at all
<Shinmera> I'm very solidly in the "lose" department
<jcowan> It goes something like this: 1. You are using approach A to do something. 2. You are forced by circumstances to adopt approach B instead. 3. Ongoing research shows the superiority of approach B. 4. Start making up stories about why approach A is really better. 5. When approach A becomes possible again, compel everyone within reach to use it.
<moon-child> the problems are moreso game-theoretic than logical fallacies
<jcowan> This is playing out right now on a mass scale where A = full-time office work and B = WFH/hybrid
<moon-child> the right thing requires more up-front work, and it requires coordination and cooperation
<Shinmera> let's nip this in the bud before we get further off the lisp track
<jcowan> Yes.
<madnificent> Shinmera, jcowan: boo! I was reading with interest where this would land :D
<jcowan> This *is* the Lisp track, but I'm willing to take the convo to #lisp, because it affects the whole Lisp community.
<Shinmera> and on that track, unfortunately charles and I haven't made much progress with the port to the Switch :(
<Shinmera> he's been stuck in the heck that is backporting changes from upstream sbcl
<Shinmera> and all the work that's left to do to get the runtime back working is definitely way out of my wheelhouse, so there's not much I can do
<Shinmera> I did finish all the OS portability library work, at least as far as I can, which is writing but not testing the code
<Shinmera> so once the runtime is back to working, we should be able to get trial running, but who knows how far off that is
<Shinmera> and with my finances the way they are idk when I can afford to pay charles for more work again
<Shinmera> really hate to have projects stuck in limbo like this
* jcowan likes this use of "heck"
Aesth has quit [Read error: Connection reset by peer]
<Shinmera> gonna have to get back to debugging collisions in trial next week, too. ugh
<Shinmera> why can't holidays be foreeever
<kenanb> yates_work: I don't know the state of the relevant APIs, but I would first check out the cairo library bindings. I know there is cl-cairo2. The code is old but the recent assessment here sounds fairly positive: https://cliki.net/cl-cairo2
<ixelp> CLiki: cl-cairo2
<kenanb> yates_work: Even if the libraries don't work for you, authoring SVG using the XML APIs should be relatively straightforward. I would do tests in Inkscape, learn from the generated XML, then generate similar XML programmatically.
scymtym has quit [Remote host closed the connection]
scymtym has joined #commonlisp
<skeemer> hello everyone how can i set emacs to be in emacs state for the slime repl? i am using evil mode
random-nick has joined #commonlisp
<olnw> skeemer: (add-hook 'slime-repl-mode-hook #'evil-emacs-state)
<skeemer> olnw: how can i find hooks for other modes like i sometimes also use geiser or cider for clojure
<skeemer> do you know by any chance?
<olnw> M-x describe-variable and then type "cider" + "hook" or "functions"
<olnw> That will work, with a fuzzy completion style.
<olnw> Otherwise, you could use M-x apropos.
monospod has quit [Quit: Konversation terminated!]
<skeemer> thank you very mych olnw
<olnw> That's OK.
<Shinmera> the hook will always be called [mode]-hook, iirc emacs establishes the hook by default when you define a mode.
kztx has quit [Ping timeout: 264 seconds]
<skeemer> thanks Shinmera
yitzi has joined #commonlisp
<skeemer> ok actually the emacs state is not what i expected... i wanted a kind of python-ish repl
<skeemer> or any kind of repl really
<skeemer> so arrow keys go through history
<skeemer> sorry i mean bash repl at this point
<skeemer> is there any way i could replicate that?
<olnw> Then you might want to disable evil mode instead of using the emacs state.
<skeemer> olnw: how ?
<olnw> (lambda () (evil-local-mode -1))
<olnw> In the above add-hook
<skeemer> (add-hook 'slime-repl-mode-hook (lambda () (evil-local-mode -1))) ?
<skeemer> it shows some errors
<olnw> What errors?
<skeemer> ops can't replicate now it's no errors but it just does not disable the evil mode
<skeemer> i can still use evil mode in the buffer
<olnw> Probably because the buffer had already been created and so the hook didn't get run.
jonatack has quit [Ping timeout: 276 seconds]
jonatack has joined #commonlisp
jmdaemon has quit [Ping timeout: 246 seconds]
<skeemer> olnw: no i have also rebooted emacs and made sure no process was open it just stays in evil mode
<skeemer> do i need a single quote before ther (lambda ?
<olnw> No.
<skeemer> this is literally the last line of my init.el
<skeemer> (add-hook 'slime-repl-mode-hook (lambda () (evil-local-mode -1)))
<skeemer> when i open emacs i do a ctrl+x ctrl+f, open a lisp file then open slime and it's still as before
<skeemer> evil mode
<skeemer> maybe some other variable messing up ?
tyson2 has joined #commonlisp
Fare has joined #commonlisp
Aesth has joined #commonlisp
<morganw> skeemer: Just going on the name, wouldn't slime-repl-mode-hook only be relevant to the buffer with the repl in it? Are you sure it shouldn't be 'slime-mode-hook? https://slime.common-lisp.dev/doc/html/Hooks.html#Hooks
<ixelp> Hooks (SLIME User Manual, version 2.24)
<olnw> I assumed that skeemer only wanted Emacs bindings in the REPL.
<olnw> I.e. not in slime-mode buffers.
rtypo has joined #commonlisp
<olnw> skeemer: This is also not working for me. I have verified that slime-repl-hook *is* being run, however the call to evil-local-mode is ineffective. Furthermore, this appears to apply generally to modes derived from comint-mode, such as IELM.
<cage> Hi! Anyone experienced cl-smtp hangs when trying to send a mail with SMTP autentication and starttls?
Aesth has quit [Read error: Connection reset by peer]
pfdietz has joined #commonlisp
rgherdt has joined #commonlisp
<skeemer> olnw: morganw i just need it in the repl
<skeemer> olnw: ok so what does this mean? there is no way to make this wrk?
<olnw> skeemer: I suggested to disable evil-mode because I assumed it was remapping the up/down arrows to previous/next-line or somesuch. Actually, it turns out that SLIME doesn't use the arrow keys for history navigation.
<olnw> So, the best approach is to use (evil-set-initial-state 'slime-repl-mode 'emacs) and then add the relevant bindings to slime-repl-mode-map.
<olnw> Sorry for the confusion.
rgherdt_ has joined #commonlisp
<olnw> That might look like (keymap-set slime-repl-mode-map "<up>" #'slime-repl-previous-input) (keymap-set slime-repl-mode-map "<down>" #'slime-repl-next-input)
rgherdt has quit [Ping timeout: 260 seconds]
pfdietz has quit [Ping timeout: 250 seconds]
Kongo04 has joined #commonlisp
Fare has quit [Ping timeout: 260 seconds]
<skeemer> olnw: let me try
josrr has joined #commonlisp
rgherdt__ has joined #commonlisp
rgherdt_ has quit [Ping timeout: 260 seconds]
Fare has joined #commonlisp
pfdietz has joined #commonlisp
Aesth has joined #commonlisp
<skeemer> olnw: ok i realized that actually what i would like is more remaining in evil mode but overriding some keys when in the repl
<skeemer> like arrow keys
decweb has joined #commonlisp
rgherdt__ has quit [Ping timeout: 256 seconds]
rgherdt has joined #commonlisp
dino_tutter has quit [Ping timeout: 252 seconds]
rgherdt_ has joined #commonlisp
<cage> nevermind, I have found that the SMTP server is not using STARTSSL but just TLS...😥
rgherdt has quit [Ping timeout: 240 seconds]
cosimone has joined #commonlisp
Guest3777 has quit [Ping timeout: 246 seconds]
pfdietz has quit [Ping timeout: 250 seconds]
Aesth has quit [Quit: WeeChat 4.1.2]
Aesth has joined #commonlisp
rgherdt_ has quit [Quit: Leaving]
Inline has quit [Quit: Leaving]
<yates_work> kenanb: thanks.
<yates_work> i'm trying to run the make on the tutorial subfolder here but it's giving me an error: https://github.com/rpav/cl-cairo2/tree/master
<ixelp> GitHub - rpav/cl-cairo2: Cairo bindings for Common Lisp
<yates_work> https://bpa.st/LDMA
<ixelp> View paste LDMA
<yates_work> do i need to build/install cairo2 first?
<yates_work> i don't see how to do that
<yates_work> kenanb: ?
NotThatRPG has joined #commonlisp
Fare has quit [Quit: Leaving]
<beach> I remember a phrase in the standard that mentions characters that are not used by Common Lisp, and that are explicitly reserved for the programmer, like \#? and \#[, but I can't remember the others, nor where that phase can be found. Does anyone know?
<beach> Ah, found it! Sorry for the noise.
<beach> It is in figure 2-7, in case someone wonders.
<Demosthenex> *sigh* i saw free pascal has free vision up to snuff, a turbovision clone. i wish i could use that in cl :P
<kenanb> yates_work: I never tried cl-cairo2 myself so I won't be able to help further. Since it is a binding to the c library, I would assume it will expect cairo library itself to be installed in your system.
Aesth has quit [Read error: Connection reset by peer]
varjag has joined #commonlisp
lispmacs[work] has quit [Ping timeout: 252 seconds]
amb007 has joined #commonlisp
<green_> yates_work - yes you'll need cairo2 on your system first. I recently used that package for something and it was great: https://github.com/atgreen/buildchart-ag
<ixelp> GitHub - atgreen/buildchart-ag: Build interesting charts from Jenkins and Kubernetes logs
<green_> oh, but now that I see your logs, it looks like asdf isn't even finding cl-cairo2
<green_> So maybe you need to quickload it, or, if you are using ocicl, just `ocicl install cl-cairo2`
<kenanb> yates_work: Also, here is a useful page documenting some cool graphics related libraries/frameworks: https://awesome-cl.com/#graphics
<ixelp> awesome-cl | A curated list of awesome Common Lisp frameworks, libraries and other shiny stuff.
<yates_work> k thanks everyone
azimut has quit [Ping timeout: 240 seconds]
<yates_work> green_: i don't seem to have ocicl on my system (this is an old lubuntu 18.04). how do i "quickload" it?
<green_> You need to pick a system for managing your lisp systems/libraries. For this, you'll need to install quicklisp or ocicl (there are others). I am the author of ocicl, and am partial to that solution! https://github.com/ocicl/ocicl
<ixelp> GitHub - ocicl/ocicl: An OCI-based ASDF system distribution and management tool for Common Lisp
<yates_work> green_: is ocicl usually included in a distribution's repos?
<green_> no
<green_> neither is quicklisp
<yates_work> you have to build it from source?
<green_> mostly
<yates_work> ok i'll rtfm
waleee has joined #commonlisp
cosimone has quit [Ping timeout: 260 seconds]
waleee has quit [Ping timeout: 264 seconds]
waleee has joined #commonlisp
<yates_work> what are viable locations for quicklisp's :path "/path/to/installation"?
<yates_work> is it an executable which could be placed in e.g. ~/.local/bin
<yates_work> ?
<Shinmera> no
<Shinmera> it's a directory where it keeps all its stuff
<yates_work> k
kenanb has quit [Ping timeout: 245 seconds]
monospod has joined #commonlisp
dino_tutter has joined #commonlisp
Kongo04 has quit [Quit: Client closed]
azimut has joined #commonlisp
Guest3777 has joined #commonlisp
Guest3777 has quit [Client Quit]
Devon has joined #commonlisp
Devon7 has joined #commonlisp
Aesth has joined #commonlisp
attila_lendvai has quit [Ping timeout: 255 seconds]
Oladon has joined #commonlisp
akoana has joined #commonlisp
Aesth has quit [Read error: Connection reset by peer]
lispmacs[work] has joined #commonlisp
pfdietz has joined #commonlisp
dajole has joined #commonlisp
<lispmacs[work]> hi, I'm trying to deal with my first name-conflict. The :USE in my DEFPACKAGE definition includes two packages that both use the same name for a function. I'm reading in the hyperspec and elsewhere but am still confused as to what is the simplest approach to dealing with this, other than not including the packages at all in the :USE field.
tyson2 has quit [Remote host closed the connection]
<lispmacs[work]> could somebody give some guidance on this?
<beach> lispmacs[work]: I recommend :USEing only the COMMON-LISP package, and using explicit (package-local) package prefixes for other symbols.
<beach> ... other symbols in packages other than the current one.
<beach> lispmacs[work]: You can never be sure that a library won't result in a name conflict.
<beach> lispmacs[work]: For example, I regularly shadow Common Lisp symbol names in my libraries.
<beach> lispmacs[work]: By using explicit package prefixes, you help the person reading your code immediately identify from which package a symbol is taken.
<decweb> The shadow option of defpackage may be of use to you, or `shadowing-import` if you are importing select symbols.
<decweb> For example, I have a package that defines an `atom` function, and my package indicates that it shadows (supersedes) the one in the common-lisp package so that I don't get errors.
<lispmacs[work]> decweb: could you explain what shadowing is a bit more clearly? I see it in the docs but the idea is not quite coming across?
<decweb> If you `defpackage` a package that "uses" the common-lisp package, and you're going to define a symbol or import a symbol which collides with the external symbols of the used common-lisp package, then you need to use SHADOW or SHADOWING-IMPORT or something like that, to avoid signalled conditions on the conflict.
<decweb> (DEFPACKAGE FOO (:USE :CL) (:SHADOW ATOM ) let's me define an atom function without conflict.
<Equill> I second beach's approach: maintenance is much easier if you don't have to guess where a given symbol comes from. You also avoid naming collisions that way, so it's a double win.
<lispmacs[work]> decweb: so, with that approach, I couldn't USE both packages. I could USE one, and than SHADOW-IMPORT all the symbols I want from the other one
<beach> *sigh*
<decweb> You could use the package, I think, but you'd need a ` (:shadowing-import-from package-name {symbol-name}*)*` in your defpackage
<decweb> However the general rule of minimizing your USE list should be taken under advisement.
<decweb> Then you can just import select symbols from select packages if you like, including making them shadowing imports if you need to.
<decweb> Not sure about using both pacakges, I'm rusty at this stuff ;-)
<decweb> You can almost always do what you want, you just need to figure out how...
<decweb> TL;DR though, if you're going to have symbol conflicts, you need to use shadow mumbles in your imports where appropriate.
tyson2 has joined #commonlisp
<decweb> Another approach is in the package you want to play in, you invoke code like (eval-when (... stuff...) (do-external-symbols (symbol :some-package) (export symbol)))
<decweb> Hm, strike that, probably not for you. But it's how I add arrow macros from one package I like to the exported symbols of another package I define/use.
<lispmacs[work]> is there some kind of package hierarchy available in the system? Like, so I can just use prefix math: and gui: instead of my-program-math: and my-program-ui
szkl has quit [Quit: Connection closed for inactivity]
<lispmacs[work]> I think that is my only concern about the "use prefixes all the time" idea, is my prefixes are all long and expressive
<lispmacs[work]> so I'd add another 20 characters to each line in the program
<Equill> lispmacs[work]: You can define nicknames for packages, which has the effect you're looking for.
<lispmacs[work]> Equill: in defpackage?
ixelp has quit [Ping timeout: 276 seconds]
<lispmacs[work]> I see it there
gilberth has quit [Ping timeout: 268 seconds]
<lispmacs[work]> so, you provide the nickname when you define the package
<Equill> Correct.
<Equill> It's a pretty handy feature.
ixelp has joined #commonlisp
<lispmacs[work]> what happens if two packages use the same nickname?
<Equill> That's an excellent question. Unfortunately, I don't have a definitive answer.
<lispmacs[work]> spec says it throws a package-error
<lispmacs[work]> I guess the questions would be what would you do about it
<Equill> If you have two third-party systems that are colliding, and you need both, I'd say your most reliable immediate option would be to make a local clone of one of the repos and edit it.
<lispmacs[work]> just am confused, long term, what would happen if I was making package :my-program-gui with nickname :gui but I needed another library :his-program-gui with nickname :gui
<Equill> You're in control of one of them. You can either change the nickname of yours, or ask the maintainer of the other to change theirs.
gilberth has joined #commonlisp
<lispmacs[work]> it would seem more useful if I could somehow specify my own nickname for somebody elses package, say at the top of a file
<lispmacs[work]> i.e., without having to dive into the code of the other library
<lispmacs[work]> I think I saw that in other language, can't remember which one
<lispmacs[work]> well, anyway, maybe I can just come up with nicknames for my stuff that are very short but still likely to be unique
<Equill> It looks like you can, via `rename-package`.
<lispmacs[work]> ah, okay
<lispmacs[work]> I assume, looking at the spec package, that the rename is global. There is not mention of scope
monospod has quit [Remote host closed the connection]
<lispmacs[work]> so presumably I would want to insert that in my packages.lisp
<lispmacs[work]> hmm, but would that somehow effect others loading my package
<Equill> That seems like the logical place.
<Equill> And yes, it would affect others; it would make maintenance a little more confusing, too.
<Gleefre> You might also consider using PLNs
<lispmacs[work]> Gleefre: PLNs?
<Gleefre> It is an extension that is quite widely supported (at least by LispWorks, Allegro CL; SBCL, CCL, ECL, ABCL, CLASP)
<Gleefre> It allows to specify nicknames that only works when specified package is the current package
<Gleefre> See the description from SBCL for example: https://www.sbcl.org/manual/#Package_002dLocal-Nicknames
<ixelp> SBCL 2.4.0 User Manual
<lispmacs[work]> okay, that seems like what I need. I could make :his-program-math be just :math or or :m or something convenient
<lispmacs[work]> I mean, math: or m:
<lispmacs[work]> i mean, you know what i mean
<lispmacs[work]> I'm using SBCL
tyson2` has joined #commonlisp
tyson2` has quit [Remote host closed the connection]
tyson2 has quit [Remote host closed the connection]
tyson2 has joined #commonlisp
Aesth has joined #commonlisp
igemnace has quit [Remote host closed the connection]
rainthree has quit [Ping timeout: 255 seconds]
Devon has quit [Ping timeout: 256 seconds]
Devon7 has quit [Ping timeout: 252 seconds]
josrr has quit [Read error: Connection reset by peer]
Inline has joined #commonlisp
josrr has joined #commonlisp
Devon has joined #commonlisp
mgl has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
pfdietz32 has joined #commonlisp
zxcvz has joined #commonlisp
pfdietz has quit [Ping timeout: 250 seconds]
zxcvz has quit [Client Quit]
mgl has quit [Ping timeout: 252 seconds]
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
bubblegum has quit [Ping timeout: 240 seconds]
mgl has joined #commonlisp
bubblegum has joined #commonlisp
Gojira is now known as BrokenCog
akoana has quit [Quit: leaving]
mgl has quit [Ping timeout: 255 seconds]
yitzi has quit [Remote host closed the connection]
Pixel_Outlaw has joined #commonlisp
<paulapatience> Yes, you should use package-local nicknames instead of nicknames.
araujo has joined #commonlisp
tyson2 has joined #commonlisp
cage has quit [Remote host closed the connection]
cage has joined #commonlisp
cage has quit [Client Quit]
Aesth has quit [Read error: Connection reset by peer]
mrcom has quit [Remote host closed the connection]
mrcom has joined #commonlisp
jmdaemon has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
varjag has quit [Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50)]
blackshuck has joined #commonlisp
mgl has joined #commonlisp
traidare has joined #commonlisp
bubblegum has quit [Ping timeout: 252 seconds]
blackshuck has quit [Quit: Using Circe, the loveliest of all IRC clients]
mgl has quit [Ping timeout: 256 seconds]
ym has quit [Ping timeout: 256 seconds]
pfdietz32 has quit [Quit: Client closed]
traidare has quit [Ping timeout: 245 seconds]
dra has joined #commonlisp
Kyuvi has quit [Quit: Client closed]
chomwitt has joined #commonlisp
pfdietz has joined #commonlisp
robin has quit [Ping timeout: 245 seconds]
notzmv has quit [Ping timeout: 260 seconds]
Oladon has quit [Quit: Leaving.]
<yates_work> i seem to have a circular problem: 1) quicklisp is already loaded (into sbcl): https://bpa.st/OAAQ
<ixelp> View paste OAAQ
kenanb has joined #commonlisp
<yates_work> and 2) CL is not loaded: https://bpa.st/BYPA
<ixelp> View paste BYPA
<yates_work> rather, 2) QL is not loaded (does not exist)
<hayley> (load "quicklisp/setup.lisp") (ql:add-to-init-file)
<yates_work> hayley: thanks! fixed.
<yates_work> ok, now when running the cl-cairo2/tutorial make file, WARNING: System definition file #P"/home/randyy/quicklisp/dists/quicklisp/software/cl-colors-20180328-git/cl-colors.asd" contains definition for system "cl-colors-tests". Please only define "cl-colors" and secondary systems with a name starting with "cl-colors/" (e.g. "cl-colors/test") in that file.
shka has quit [Ping timeout: 245 seconds]
<yates_work> do i need to update cl-colors?
<yates_work> is there a (ql:quickupdate "cl-colors")?
<hayley> That's fine, it's just ASDF (the build system) being picky.
<yates_work> perhaps that is not the real problem. evidently the file example.pdf is supposed to be generated before pdflatex is run on tutorial.tex, and it doesn't
<yates_work> exist
<yates_work> https://bpa.st/X6YQ
<ixelp> View paste X6YQ
<yates_work> ..and why does it try to run (progn (load "example.lisp") like 8 times???
<yates_work> i commented out that includegraphics and now i get another: text.pdf not found
<yates_work> is this demo just basically hosed or what?
<yates_work> git clone git://github.com/rpav/cl-cairo2.git
<josrr> yates_work: I tried sbcl --eval '(progn (load "example.lisp") (quit)) in the tutorial directory; the file example.pdf was generated.
<josrr> but I used the files that quicklisp downloaded
<yates_work> josrr: did you mean: sbcl --eval '(progn (load "example.lisp") (quit))'
<josrr> yes
<yates_work> i tried that in the git tutorial/ directory and it did not generate example.pdf
azimut has quit [Ping timeout: 240 seconds]
<yates_work> what do you mean "the files that quicklisp downloaded"?
<josrr> Then I tried the tutorial for the recently cloned cl-cairo2 and the file was not generated
<josrr> ~/quicklisp/dists/quicklisp/software/cl-cairo2-20211020-git/tutorial
<yates_work> so there's something hosed in that git repo?
<yates_work> let me try the one there
<yates_work> yup, that Makefile successfully ran to completion and generated a new tutorial.pdf
<yates_work> josrr: thanks so much for your help!
<josrr> I don't know what's going on with the repository, the last commit is from 7 years ago
<yates_work> recent...
<yates_work> green_: is this the sort of thing you were trying to avoid with ocicl?
<yates_work> that lissajous figure reminds me of the Star Trek (TOS) "Tholian Web" episode!
<yates_work> (yes, i'm that old...)
yitzi has joined #commonlisp
epony has quit [Remote host closed the connection]