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>
kevingal has quit [Remote host closed the connection]
waleee has quit [Ping timeout: 245 seconds]
Catie has quit [Quit: going home]
waleee has joined #commonlisp
taiju has quit [Ping timeout: 252 seconds]
lottaquestions has quit [Quit: Konversation terminated!]
lottaquestions has joined #commonlisp
azimut_ has joined #commonlisp
azimut has quit [Ping timeout: 276 seconds]
nature has joined #commonlisp
waleee has quit [Ping timeout: 252 seconds]
waleee has joined #commonlisp
azimut_ has quit [Remote host closed the connection]
azimut has joined #commonlisp
waleee has quit [Ping timeout: 264 seconds]
waleee has joined #commonlisp
pjb has joined #commonlisp
zazzerino has joined #commonlisp
abrantesasf has joined #commonlisp
zazzerin` has joined #commonlisp
random-nick has quit [Ping timeout: 260 seconds]
zazzerino has quit [Ping timeout: 264 seconds]
waleee has quit [Ping timeout: 265 seconds]
winning-luser has joined #commonlisp
waleee has joined #commonlisp
sander has joined #commonlisp
sgithens has quit [Ping timeout: 245 seconds]
victor has quit [Ping timeout: 245 seconds]
lottaquestions has quit [Ping timeout: 264 seconds]
travv0 has quit [Ping timeout: 252 seconds]
iisi has joined #commonlisp
hubvu has joined #commonlisp
IUSR has joined #commonlisp
jsatk has joined #commonlisp
pl has joined #commonlisp
d_run has joined #commonlisp
ullbeking has joined #commonlisp
taiju has joined #commonlisp
travv0 has joined #commonlisp
victor has joined #commonlisp
CrashTestDummy2 has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
CrashTestDummy3 has quit [Ping timeout: 252 seconds]
sgithens has joined #commonlisp
waleee has quit [Ping timeout: 252 seconds]
khrbt has quit [Ping timeout: 264 seconds]
Guest-liao has joined #commonlisp
waleee has joined #commonlisp
gaqwas has quit [Ping timeout: 245 seconds]
gaqwas has joined #commonlisp
Demosthe1ex has joined #commonlisp
khrbt has joined #commonlisp
Demosthenex has quit [Ping timeout: 252 seconds]
nature has quit [Ping timeout: 265 seconds]
waleee has quit [Ping timeout: 265 seconds]
lisp123 has joined #commonlisp
waleee has joined #commonlisp
<beach> Good morning everyone!
lisp123 has quit [Ping timeout: 265 seconds]
johnjay has quit [Ping timeout: 252 seconds]
johnjay has joined #commonlisp
waleee has quit [Ping timeout: 264 seconds]
waleee has joined #commonlisp
kakuhen has joined #commonlisp
abrantesasf has quit [Remote host closed the connection]
Guest-liao has quit [Quit: Client closed]
waleee has quit [Ping timeout: 268 seconds]
lad has quit [Ping timeout: 245 seconds]
winning-luser has quit [Quit: zzz]
zazzerin` has quit [Ping timeout: 264 seconds]
Guest-liao has joined #commonlisp
<hayley> I'd be interested in any other GC-heavy multi-threaded benchmarks too, for what it's worth.
akoana has quit [Quit: leaving]
Bike has quit [Quit: sleep]
Guest-liao has quit [Ping timeout: 256 seconds]
semz has quit [Ping timeout: 252 seconds]
<jmercouris> good morning beach
<jmercouris> borodust: is it called 'burgled batteries' because the batteries are burgled from other projects? is that the rationale?
<jmercouris> borodust: sorry, I confused you with somebody else, I was thinking of bodge* or some other library you have and burgled-bodged got transposed in my head
jealousmonk has quit [Quit: sleep zZzz]
semz has joined #commonlisp
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
_whitelogger has joined #commonlisp
<etimmons> jmercouris: Python famously comes with "batteries included"
<etimmons> So I've always assumed that it's called "burgled batteries" since, as a Python/CL bridge, it's stealing Python's batteries
<jmercouris> I was thinking the same after reflecting on the fact that it was python :-D
<hayley> Don't worry, the batteries only corroded 10 years ago.
<jmercouris> I kind of want to make my own lisp which is a superset of Common Lisp by including some of my favorite CL libraries
<jmercouris> I wouldn’t make a new compiler or anything, just ship an image with some libraries added
<jmercouris> Maybe even put all of their symbols in the cl package or something
<hayley> 😬
<jmercouris> I guess that’s what cl21 tried to do
<jmercouris> A lot of people really don’t like it, but I think it was a good endeavor
<jmercouris> Why the reaction Hayley?
<hayley> Double :grimacing:. 😬 😬
<hayley> Because another language breaks compatibility with everything, whereas just having "CL with some nice libraries" doesn't.
<jmercouris> Grimacing because it would break backward compatibility ?
<jmercouris> I figured as much
<jmercouris> You just typed a little faster
<jmercouris> I haven’t done it yet, have I?
<hayley> Yeah. Good chance that (defpackage :blah (:use :cl)) is going to do something very bad.
ad-absurdum has joined #commonlisp
<jmercouris> Well, maybe one day I will do it
<jmercouris> I think it would be nice, but maybe that’s too much NIH
<jmercouris> Don’t worry, I’m not doing it today, or this next year
<jmercouris> Maybe in 5 or 10 years
<jmercouris> So there will be time to convince me of my errant ways in the future
CrashTestDummy3 has joined #commonlisp
CrashTestDummy2 has quit [Ping timeout: 252 seconds]
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
lisp123 has joined #commonlisp
azimut has quit [Remote host closed the connection]
aartaka has joined #commonlisp
Nilby has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
Guest-liao has joined #commonlisp
Posterdati has quit [Ping timeout: 252 seconds]
wyrd has quit [Remote host closed the connection]
Posterdati has joined #commonlisp
aartaka has quit [Read error: Connection reset by peer]
Guest-liao has quit [Quit: Ping timeout (120 seconds)]
aartaka has joined #commonlisp
Spawns_Carpeting has quit [Ping timeout: 245 seconds]
lisp123 has quit [Remote host closed the connection]
pve has joined #commonlisp
selwyn_ has joined #commonlisp
selwyn_ has quit [Client Quit]
euandreh has quit [Ping timeout: 245 seconds]
euandreh has joined #commonlisp
lisp123 has joined #commonlisp
jasom has quit [Ping timeout: 265 seconds]
jasom has joined #commonlisp
Guest-liao has joined #commonlisp
<jackdaniel> yesterday I wrote a short post about the macro do and tail recursion https://turtleware.eu/posts/How-do-you-DO-when-you-do-DO.html
<jackdaniel> that was prompted by the yesterday discussion about do (however only remotely relevant to it)
<lisp123> jackdaniel: Interesting, thanks
<lisp123> Do you prefer DO over normal recursive functions?
<lisp123> tail recursive*
<jackdaniel> I don't have any strong preference - if something can be expressed clearly in terms of do then it is fine
<xaotuk> jackdaniel: Wow! I always observed "do" as some ancient iteration construct, never being aware that it's compact tail recursion. You opened my eyes, thanks!
<jackdaniel> I mostly use do in macros to build specialized iteration constructs
<jackdaniel> xaotuk: sure :)
<lisp123> jackdaniel: Makes sense, DO does offer quite a bit of control
heisig has joined #commonlisp
rgherdt has joined #commonlisp
<pve> jackdaniel: Is it "recurring" or "recursing"?
<pve> jackdaniel: Good post. I've never once used "do", but maybe that will change now :)
MichaelRaskin has joined #commonlisp
lisp123 has quit [Quit: Leaving...]
ad-absurdum has quit [Quit: Leaving]
hendursa1 has joined #commonlisp
hendursaga has quit [Ping timeout: 276 seconds]
cosimone has joined #commonlisp
zacque has joined #commonlisp
<jackdaniel> thanks
zacque has quit [Quit: Client closed]
Guest-liao has quit [Quit: Client closed]
Guest-liao has joined #commonlisp
<borodust> jmercouris: no probs! i have some bodges, yes :)
<Colleen> borodust: drmeister said at 2021.10.11 20:25:12: Thanks - I wasn't sure if I was just not thinking about it properly
waleee has joined #commonlisp
lisp123 has joined #commonlisp
cage has joined #commonlisp
waleee has quit [Ping timeout: 264 seconds]
lottaquestions has joined #commonlisp
waleee has joined #commonlisp
waleee has quit [Ping timeout: 265 seconds]
waleee has joined #commonlisp
waleee has quit [Client Quit]
igemnace has quit [Quit: WeeChat 3.3]
waleee has joined #commonlisp
Qwnavery has quit [Quit: WeeChat 3.3]
hendursa1 has quit [Remote host closed the connection]
hendursa1 has joined #commonlisp
hendursa1 has quit [Remote host closed the connection]
hendursa1 has joined #commonlisp
frgo_ has joined #commonlisp
frgo has quit [Quit: Leaving...]
frgo_ has quit [Client Quit]
frgo has joined #commonlisp
Jach has quit [Remote host closed the connection]
lisp123 has quit [Remote host closed the connection]
hendursa1 has quit [Ping timeout: 276 seconds]
hendursa1 has joined #commonlisp
frgo has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
frgo has joined #commonlisp
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
lisp123 has quit [Ping timeout: 264 seconds]
frgo has quit [Client Quit]
White_Flame has quit [Remote host closed the connection]
White_Flame has joined #commonlisp
montxero has joined #commonlisp
lisp123 has joined #commonlisp
skeemer has quit [Remote host closed the connection]
makomo_ has joined #commonlisp
random-nick has joined #commonlisp
lisp123 has quit [Ping timeout: 265 seconds]
srhm has quit [Read error: Connection reset by peer]
srhm has joined #commonlisp
skeemer has joined #commonlisp
Lord_of_Life has quit [Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine]
<skeemer> hello all, i am quite new to common lisp, i was wondering why most of the people uses sbcl, and what are the reasons to prefer it to clisp ?
<hayley> SBCL compiles to machine code, so it is (almost?) always faster, and it is more maintained.
<skeemer> okok thanks
Lord_of_Life has joined #commonlisp
Lord_of_Life_ has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 245 seconds]
Lord_of_Life_ is now known as Lord_of_Life
waleee has quit [Ping timeout: 264 seconds]
Lord_of_Life_ has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 264 seconds]
Lord_of_Life_ is now known as Lord_of_Life
heisig has quit [Quit: Leaving]
Lord_of_Life has quit [Ping timeout: 264 seconds]
dec0d3r has joined #commonlisp
waleee has joined #commonlisp
frgo has joined #commonlisp
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
icer has joined #commonlisp
tfb has joined #commonlisp
pjb has quit [Ping timeout: 245 seconds]
Bike has joined #commonlisp
<icer> My working remote slime/swank debugging broke after trying to update sbcl to the downloaded latest from Ubuntu 20.04's default. I've tried reverting, recompiling, but now it's always complaining about swank-io-package stuff missing and swank indentation things missing. Any ideas?
<icer> Slime itself is working. The slime-connect fails with errors.
<icer> Or is there a better place to ask?
<Bike> have you updated swank too? maybe it needs changes for newer sbcl
<jackdaniel> remove ~/.slime
sepanko has joined #commonlisp
<icer> I tried a fresh load of the latest quicklisp swank.
<icer> jack: I'll try now
<beach> icer: You can use completion to get the full IRC handle of the person you are addressing.
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
<icer> jackdaniel: Ok, I can connect to the binary running on my local machine, but to the same binary over ssh port forwarding, the same errors occur.
<icer> beach: thanks
frgo has quit [Ping timeout: 268 seconds]
<icer> jackdaniel: I md5summed the binary to confirm its the same. There is no ~/.slime on the remote system.
tyson2 has joined #commonlisp
<_death> jackdaniel: when I think of DO, I tend to recall the little box on PG's ANSI Common Lisp, I think with the headline "The point of DO".. in it he quotes from the paper "The Evolution of Lisp"
pjb has joined #commonlisp
<hayley> DO or DO not, there is no TRY.
<icer> I still connect and get the "Can't locate module: SWANK-IO-PACKAGE::SWANK-INDENTATION", which is odd considering it's the same binary.
<_death> the quotation is about how iteration over a single variable is often not very useful on its own, and how DO allows iterating multiple variables, and consequently the DO body can often be empty
frgo has joined #commonlisp
djuber has quit [Remote host closed the connection]
<_death> icer: maybe the swank fasls are some other place on the remote machine
<_death> icer: a while ago I added a restart to be able to continue from this error, btw.. https://github.com/death/slime/commit/9f5cc8c7cf042f821ee3f2c838c6b617e8aeaf6d
frgo has quit [Ping timeout: 245 seconds]
<icer> _death: nice retart idea. So, are fasls not built into the image? My Makefile uses (asdf:make). Or is swank something I need to manually quickload on the remote?
<_death> icer: if you load swank into the image prior to building it, it's there
<_death> icer: you should also make sure to load the contribs you use
<akater[m]> jackdaniel: Your post did clarify DO for me.
<icer> _death: I don't do an explicit load, just a ql:quickload of the project's asd system, then build, which shouldn't call the entrypoint. At one point I tried adding --eval '(swank-loader:init)' before the build command.
<mfiano> _death: Ah yes, Norvig uses the empty body form a few times in PAIP
<mfiano> I practically learned DO by reading his code :)
<icer> _death: It didn't seem to help, but I'll add it back in.
<_death> icer: can also try to pass :load-contribs t to init
lisp123 has joined #commonlisp
dra has joined #commonlisp
<icer> _death: It takes a couple minute to deploy - slow connection. In the meantime I tried sshing in to the remote and trying to emacs/slime locally on the remote and got a swank version mismatch 24 vs 26.1, which apt tells me 24 is on the remote, and I know 26.1 is local to my dev machine. May be the issue.
<pjb> hayley: (defmacro try (expression) `(ignore-errors ,expression))
lisp123 has quit [Ping timeout: 252 seconds]
<_death> icer: probably shouldn't use apt to manage swank ;)
frgo has joined #commonlisp
<icer> _death: :)
<icer> _death: how do I make slime recompile after I patch the file for your restart? I did a slime C-c C-c, and compiled, but that didn't seem to be enough.
frgo has quit [Ping timeout: 252 seconds]
<_death> icer: my core rebuilding script removes ~/.slime/fasl prior to making the core
<icer> _death: odd, the swank-loader line doesn't seem to have an effect, the remote is still looking for the v24 swank rather than what I tried to build into the image.
<_death> icer: did you apt remove slime
<_death> I dunno what the distribution-specific packages do exactly
<icer> _death: yes, I forgot to "purge" it, I'll see if that works. I've also quickloaded swank, but that didn't work.
perrierjouet has quit [Quit: WeeChat 3.3]
perrierjouet has joined #commonlisp
Bike has quit [Quit: Connection closed]
montxero has quit [Remote host closed the connection]
<icer> _death: so.. same as dev machine, used quicklisp to install swank and melpa in emacs to install slime on remote. Tried using emacs/slime on remote for a remote-local connection, and it fails, same failure to load swank-indentation :(
<icer> _death: same version of sbcl. Is sly less finicky?
<_death> icer: I don't use quicklisp or melpa to manage slime.. I just clone the repo
srhm has quit [Read error: Connection reset by peer]
srhm has joined #commonlisp
<icer> _death: I'll try it. github.com/slime/slime right?
<_death> icer: in fact I do this for all lisp-related things.. I have a "third-party" directory of CL code repos (it's a subdirectory of quicklisp, ~/quicklisp/third-party due to historical reasons, as I started by converting all QL libraries I had.. https://gist.github.com/death/2fb6218858c6212ebea052f2e3d4f0b3 )
<icer> _death: lisp is starting to not look practical
<_death> icer: well, it's just the way I work.. maybe others can help you do it in a way that is more practical for you
frgo has joined #commonlisp
<icer> _death: you do this for every project deployment? Or no deployments?
Psybur has joined #commonlisp
Inline has quit [Ping timeout: 268 seconds]
<_death> icer: I have a personal server running lisp.. I don't upload images to it, though
<_death> I use syncthing to synchronize between various development machines
<_death> to pick up new changes, I have a basic program that fetches for each repo, and I can then review the changes and merge/rebase
<_death> anyway, it's just how I work.. lots of custom stuff ;)
frgo has quit [Ping timeout: 268 seconds]
Inline has joined #commonlisp
peterhil has quit [Read error: Connection reset by peer]
peterhil has joined #commonlisp
<_death> I do use melpa for emacs packages (not slime), but also keep them in a big git repo, so that I can review changes, revert, etc.
frgo has joined #commonlisp
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
<mfiano> _death: I also do that with syncthing, but no quicklisp, just CLPM
frgo has quit [Remote host closed the connection]
dec0d3r has quit [Remote host closed the connection]
frgo has joined #commonlisp
<icer> _death: I can see using git for control. What's CLPM?
<icer> _death: nvm, found it
waleee has quit [Ping timeout: 252 seconds]
makomo_ has quit [Ping timeout: 264 seconds]
waleee has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
waleee has quit [Ping timeout: 252 seconds]
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
frgo has quit [Remote host closed the connection]
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
frgo has joined #commonlisp
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
nature has joined #commonlisp
tfb has joined #commonlisp
igemnace has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
igemnace has quit [Client Quit]
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
frgo has quit [Remote host closed the connection]
tfb has quit [Remote host closed the connection]
frgo has joined #commonlisp
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
waleee has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
Guest-liao has quit [Quit: Client closed]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
<gin> if I just need to do a boolean check for whether an item exists in list, is either of FIND or POSITION more preferred than the other?
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
<_death> clhs member
tfb has quit [Remote host closed the connection]
<beach> gin: I would use MEMBER.
<mfiano> Which will handle finding a NIL
tfb has joined #commonlisp
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
<gin> beach, mfiano, thanks! MEMBER is exactly what I needed
<beach> Sure.
rain3 has joined #commonlisp
tfb has quit [Ping timeout: 245 seconds]
f-a has joined #commonlisp
tyson2 has quit [Quit: ERC (IRC client for Emacs 27.2)]
lisp123 has joined #commonlisp
rgherdt has quit [Ping timeout: 260 seconds]
lisp123 has quit [Ping timeout: 264 seconds]
pjb has quit [Remote host closed the connection]
pjb has joined #commonlisp
lonjil has quit [Quit: Quit.]
lonjil has joined #commonlisp
amb007 has quit [Ping timeout: 252 seconds]
amb007 has joined #commonlisp
waleee has quit [Ping timeout: 264 seconds]
tfb has joined #commonlisp
<beach> There is an irritating contradiction of terminology in the Common Lisp standard that would be good to fix some day. Usually "bound" means "has a value", so that BOUNDP returns true if and only if the variable has a value and MAKUNBOUND makes the variable have no value. But that terminology is not great, as is evident in the dictionary entry on PROGV.
<beach> clhs progv
<beach> "the remaining symbols are bound and then made to have no value"
<beach> But they are not bound and then made unbound.
<beach> So it is possible to have a binding for a special variable, but it has no value in that binding.
<beach> I can see two solutions...
tfb has quit [Remote host closed the connection]
tfb has joined #commonlisp
f-a has left #commonlisp [#commonlisp]
<beach> 1. Let "bound" mean that a binding exists, but it can have no value. That solution would require renaming BOUNDP and MAKUNBOUND which makes this solution hard.
<beach> 2. Keep "bound" to mean "has a value", but introduce a new term for what we now call a "binding".
<beach> I much prefer solution 1, but it's not going to happen.
selwyn_ has joined #commonlisp
<beach> The glossary does not mention "having a value" in association with "bind", "bound", "binding", so that suggests solution 1.
<Nilby> How about accepting that natural language is imprecise and adding a denotational semantics definition like scheme?
<MichaelRaskin> Hmm, the glossary does mention values in examples for bindings
<beach> Nilby: [quoting RMS]: Sounds good. Let me know when you have implemented it.
<Nilby> beach: I know. It makes my head swim to to think of it for all of CL. Even the scheme version is challenging.
<beach> MichaelRaskin: There is no glossary entry for "bindings". Do you mean for "binding"? For lexical variables, they are the same.
<MichaelRaskin> I have an impression that mentioning the remaining variables being bound (which is against the glossary definition, which asks these names to denote something, which they don't withing dynamic extent) is just so that «bindings are undone» covers them
waleee has joined #commonlisp
<MichaelRaskin> beach: I mean entry for «binding» that gives examples of different kinds of bindings
<beach> MichaelRaskin: I have no idea what your last phrase means.
<beach> "is just so that «bindings are undone» covers them"?
<beach> Who is "them"?
<MichaelRaskin> The spec for progv says «The bindings of the dynamic variables are undone on exit from progv.»
<Nilby> Also it's not clear how useful denotational semantics is to anybody, since I and many others wrote a scheme without looking too much at it.
<beach> MichaelRaskin: Yes, so?
selwyn_ has quit [Quit: Leaving]
<MichaelRaskin> This seems to cover the variables that are deprived of their values for the dynamic extent of progv
<beach> I still have no idea what you are suggesting, but let me put it this way...
<beach> Do we agree that (let ((*x* 234)) ...) introduces a binding for *x*?
<MichaelRaskin> I am not yet suggesting, I am trying to understand why the phrase «bound and then made to have no value» was written
<beach> I'll explain again then.
<Nilby> I agree there's more to it than just being bound and unbound which it would be nice to have a precise term for.
<beach> If so, assume we have (let ((*x* 111)) (let ((*x* 234)) (makunbound '*x*) *x*))
<beach> What is the value of the last *x*?
<_death> (defvar *x* 123) (progv '(*x*) () (boundp '*x*)) => NIL
<beach> If it has no value, then makunbound did not undo the binding introduced by the inner LET.
<beach> MichaelRaskin: Do you see what I mean?
<beach> _death: Exactly, so the PROGV page says *x* is still bound, but BOUNDP returns false.
<_death> beach: right.. so maybe the wording in PROGV entry is bad
<MichaelRaskin> Technically speaking. doesn't «then made to have no value» have power to also make the variable unbound there?
<beach> _death: If that is what you think, you have to invent a new term for what (let ((*x* 234)) does
Lord_of_Life has joined #commonlisp
<_death> beach: why? it binds *x* to 234.. I am saying that you're right there's a distinction missing.. the progv form creates a binding with the value being a marker
<beach> MichaelRaskin: Only if you accept that "to be unbound" does not mean "has no binding".
waleee has quit [Ping timeout: 264 seconds]
<MichaelRaskin> I am fine with «unbound ]
<MichaelRaskin> [in the current extent and scope]» meaning «has no binding [accessible in the current extent and scope]»
<beach> MichaelRaskin: But the binding is accessible. You can do (setq *x* 234), and it affects that very binding.
<Nilby> LET just doesn't allow the trick that progv does, but one could imagine or make a LET that allowed you to make something locally unbound.
<MichaelRaskin> In practice makunbound doesn't seem to do anything to the lexical binding. Which might be a bigger question than whether progv specification is too sloppily worded
<pjb> beach: 1. is impossible. If a binding exists, the variable or slot is bound.
<beach> pjb: Sure, that's a tautology.
<pjb> Perhaps the problems comes from the difference between variables and slots, and the fact that dynamic variables use the symbol-value slot (or at least, the symbol-value operator).
<beach> MichaelRaskin: Right, no lexical bindings are involved here.
<MichaelRaskin> In case of progv?
<beach> They are all special bindings.
<beach> Not lexical.
<pjb> Yesterday I described varname : [*]--> value saying that the symbol varname named the variable [ ] (a slot) and the binding is the arrow *--> between the variable (or slot) and the value.
<MichaelRaskin> Just (let ((x 1)) (makunbound 'x) x) is already questionable
<beach> MichaelRaskin: Questionable?
<beach> MichaelRaskin: PROGV handles only special variables.
<MichaelRaskin> My code does not even use PROGV
<beach> MichaelRaskin: MAKUNBOUND works only on special variables.
<MichaelRaskin> Just LET. I am not sure if by the letter of the standard it should work. In practice it does.
<pjb> I think the spec of PROGV uses "bound" incorrectly in "the remaining symbols are bound and then made to have no value." they mean that the variables named by those symbols are created, and made unbound.
<beach> MichaelRaskin: Define "works"?
<pjb> Same as with defvar without an initial value.
<MichaelRaskin> Returns a value without signalling an serious condition.
<beach> pjb: What you are saying is solution 2.
<beach> pjb: But that is unfortunate, because then (let ((*x*)) does not "create a binding" but it "creates a variable".
<MichaelRaskin> Specification of MAKUNBOUND is vague enough that I am not sure how to deduce from it that it only affect special variables
<pjb> LET always creates bindings in addition to the variable, since it binds them to NIL.
<beach> MichaelRaskin: That is entirely possible, but I can guarantee you that that is what is meant, since the name of the variable is evaluated.
<beach> pjb: I understand what you are saying, and that's solution 2.
<MichaelRaskin> Sure
<pjb> Notably any unbound slot or variable, still exists. There's some place designated by the slot accessor or the variable name, that can be assigned a value, ie. bound to it.
tyson2 has joined #commonlisp
<pjb> beach: I agree.
<pjb> For me, the binding is the *--> arrow, not the : association between varname (or slot place form) and [ ] the actual box where the reference to the value is stored.
<beach> The way I see things is that special variables come with a stack of "things", where each entry in the stack has a value or a marker indicating that there is no value there.
<beach> I would like a word for that thing.
<beach> The glossary suggests "binding", but that is inconsistent with MAKUNBOUND and BOUNDP.
<beach> So pjb is suggesting a "variable", because the variables are created.
<pjb> Yes.
<beach> But then we have a problem that a "special variable" is a not a variable, but a stack of variables.
<pjb> That said, only one is visible at a time.
<beach> Sure.
<pjb> (and it's multiple stacks, one for each thread, unless the thread access a global stack).
<Nilby> I thought that's what "environment" was.
<beach> Nilby: An environment is way more than a single association between a single symbol and a single value/no-value-marker.
<pjb> I think "variable" can recover both a single slot, or a stack of them or more complex storage forms.
<beach> Anyway, it was a big mistake to bring this up. Besides, dinner is imminent.
<pjb> Also, temporary dynamic bindings can be implemented using the same slot, but saving and restoring the value on the execution stack.
<pjb> I think we'd need a formal specification of CL. Terminology can be deduced from the formal notions.
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
<beach> So then we must accept that (setq *x* 234) does not alter the current binding of *x*)
<beach> Because if it was preceded by (makunbound '*x*) then it doesn't HAVE a binding to be altered.
<beach> Luckily, SETQ doesn't mention "binding".
<beach> Anyway, I'm off. Sorry for stirring up this controversy.
amb007 has quit [Ping timeout: 264 seconds]
<_death> I would say that special variables always have a binding.. makunbound merely sets the value to a marker
<_death> and boundp tests for (i) does it have a binding (ii) if it does, is the value this marker
<Nilby> _death: That's how I think of it. In the old days the unbound marker was even real.
<_death> it's still real, say in class slots
peterhil has quit [Ping timeout: 264 seconds]
<_death> Nilby: (let ((*x* (sb-kernel:make-unbound-marker))) *x*)
<_death> the question is, I guess, from this implementational model, how do we abstract to create good wording for the language specification
<_death> in ordinary CL conversation we say that (defvar *x*), without prior reference to *x*, marks *x* as a special variable, and that this special variable is unbound
waleee has joined #commonlisp
<Nilby> TIL an unbound variable actually has the value #x50100109
<Nilby> in some sense
<Nilby> (logior (+ sb-vm:static-space-start #x100) 9)
selwyn_ has joined #commonlisp
selwyn_ has quit [Client Quit]
Posterdati has quit [Ping timeout: 245 seconds]
<White_Flame> looking at the disassembly, it's only checking the low byte tags for #x09. I wonder what the rest of the word implies
<White_Flame> (and obviously the #x50100109 is not a "value" in the lisp sense, but rather a specific machine word encoding here)
amb007 has joined #commonlisp
johnjay has quit [Ping timeout: 268 seconds]
Posterdati has joined #commonlisp
<Nilby> Yes. Not very important to know, but at least now I can see that unbound things might look like dark red when I scroll through memory as pixels.
johnjay has joined #commonlisp
Bike has joined #commonlisp
hendursa1 has quit [Quit: hendursa1]
lisp123 has joined #commonlisp
hendursaga has joined #commonlisp
<_death> with that alpha?
<Nilby> of course to see the pixels well, one has to ignore alpha or do 24 bits
<_death> reminded of those hilbert curve visualizations of binary data
<Nilby> Hmmm. That sounds like a fun filter
* Nilby considers how to implement as a Lisp pixel shader
lisp123 has quit [Ping timeout: 260 seconds]
frgo has quit [Remote host closed the connection]
johnjay has quit [Ping timeout: 265 seconds]
tfb has quit [Quit: died]
johnjay has joined #commonlisp
hendursaga has quit [Remote host closed the connection]
hendursaga has joined #commonlisp
icer has quit [Ping timeout: 252 seconds]
frgo has joined #commonlisp
frgo has quit [Client Quit]
tfeb has joined #commonlisp
tfeb has quit [Quit: died]
hendursaga has quit [Ping timeout: 276 seconds]
hendursaga has joined #commonlisp
Qwnavery has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
rain3 has quit [Ping timeout: 260 seconds]
lad has joined #commonlisp
amb007 has joined #commonlisp
Spawns_Carpeting has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
cosimone has quit [Remote host closed the connection]
pve has quit [Quit: leaving]
cosimone has joined #commonlisp
frgo has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
lad has quit [Remote host closed the connection]
tyson2 has quit [Quit: ERC (IRC client for Emacs 27.2)]
CrashTestDummy2 has joined #commonlisp
CrashTestDummy3 has quit [Ping timeout: 252 seconds]
lisp123 has joined #commonlisp
Michal has joined #commonlisp
<Michal> Hi all
<lisp123> Hi Michal, how are you?
<Michal> I'm great
<lisp123> Good stuff
tyson2 has joined #commonlisp
lisp123 has quit [Quit: Leaving...]
<Michal> Does anybody have any recommendations for machine learning libraries in Common Lisp?
cosimone has quit [Quit: ERC (IRC client for Emacs 27.1)]
mortemeur has quit [Read error: Connection reset by peer]
frgo has quit []
lottaquestions has quit [Quit: Konversation terminated!]
lottaquestions has joined #commonlisp
<Qwnavery> Michal: take your pick https://common-lisp.net/libraries#header1-332
<Qwnavery> clml is probably your best bet
akoana has joined #commonlisp
<Michal> Cool thanks man
<Michal> What about Numcl?
<Qwnavery> not sure
<Michal> No problems
<Michal> I'll check out clml
<Qwnavery> It's a hard one because I'm unaware of any ML projects that have GPU accellerated support
<Qwnavery> Michal: mgl might be better because of the documentation.
<Michal> Ah. So I can't rely on Common Lisp's speed necessarily?
<Qwnavery> Michal: ah actually, would you look at that, mgl has CUDA
<Michal> I thought it was much faster than Python, but I heard Python had an optimised library via numphy
<Qwnavery> use mgl and mat-mgl
<Michal> What's CUDA? I'm very new to all of this. I just finished Andrew Ngs course and wanted to try stuff out
<Qwnavery> Have you done any lisp programming before?
<Bike> cuda is the nvidia api for gpu programming https://en.wikipedia.org/wiki/CUDA
<Qwnavery> ^
<Michal> Thanks man
<Michal> I have done some basic stuff. This channel was helpful on that
<Qwnavery> Michal: cool, to get started with CUDA you'll need the Proprietary Nvidia CUDA drivers https://developer.nvidia.com/cuda-downloads
<Qwnavery> This also assumes you have the Proprietary Nvidia drivers installed an not noveau
<Qwnavery> after that It's just following the guide in mlg-mat/README.md
<Qwnavery> s/-mat/ /
<Michal> Qwnavery: Thanks, I really appreciate it. I'm gonna check it out now!
Nilby has quit [Ping timeout: 245 seconds]
wyrd has joined #commonlisp
dec0d3r has joined #commonlisp
Mandus has quit [Ping timeout: 245 seconds]
Mandus has joined #commonlisp
Michal has left #commonlisp [ERC (IRC client for Emacs 27.1)]
icer has joined #commonlisp
lottaquestions has quit [Ping timeout: 264 seconds]
Bike has quit [Quit: Connection closed]
dra has quit [Remote host closed the connection]
wyrd has quit [Ping timeout: 276 seconds]
Psybur has quit [Remote host closed the connection]
lottaquestions has joined #commonlisp
jealousmonk has joined #commonlisp
icer has quit [Remote host closed the connection]
lottaquestions has quit [Ping timeout: 264 seconds]
peterhil has joined #commonlisp
Mandus has quit [Ping timeout: 252 seconds]
peterhil has quit [Ping timeout: 265 seconds]
Mandus has joined #commonlisp
Bike has joined #commonlisp
wyrd has joined #commonlisp
dec0d3r has quit [Remote host closed the connection]
Mandus has quit [Ping timeout: 264 seconds]
Mandus has joined #commonlisp
Mandus has quit [Ping timeout: 264 seconds]
Mandus has joined #commonlisp
Bike has quit [Quit: Connection closed]
random-nick has quit [Quit: quit]
Mandus has quit [Ping timeout: 265 seconds]