<White_Flame>
old lisp filesystems stored versions automatically on overwrite, but that wasn't really "source control" as we know it
<aeth>
a good substitute for the old foo-1.lisp foo-2.lisp etc
<aeth>
but, yes, the problem is that you don't necessarily get a consistent state because foo-2 might not line up with bar-2
<aeth>
a lot of the time it's not actually going to cause issues (most revisions don't change every document and most APIs are stable)
<aeth>
it doesn't give you a snapshot of a point in time larger than one file, though
<aeth>
(and modern distributed vcs like git solves separate issues... what happens when two people work on the same repository at the same time? or working offline etc.)
Oladon has quit [Quit: Leaving.]
Josh_2 has quit [Ping timeout: 240 seconds]
Oladon has joined #commonlisp
pve has joined #commonlisp
sjl_ has quit [Ping timeout: 255 seconds]
sjl_ has joined #commonlisp
jobhdez has joined #commonlisp
<jobhdez>
what do you all like about common lisp the best? for your use case?
<hayley>
It goes fast, and is interactive.
<beach>
CLOS for me I think.
<jobhdez>
nice. any of you have experience building compilers with common lisp?
<beach>
Hard to decide. Yes, the interactive/incremental aspect.
<beach>
jobhdez: Yes, me, bike, hayley, and more.
Gleefre has joined #commonlisp
<jobhdez>
any of you have experience using ANF as an intermediate language?
<beach>
Not me.
<hayley>
Nor I.
<jobhdez>
what type of compilers have you you all worked on?
<jobhdez>
just curious
<beach>
minion: Please tell jobhdez about Cleavir.
<minion>
jobhdez: Cleavir: A project to create an implementation-independent compilation framework for Common Lisp. Currently Cleavir is part of SICL, but that might change in the future
<beach>
Actually Cleavir v2 is NOT part of SICL.
<beach>
minion: Please tell jobhdez about SICL.
<minion>
jobhdez: SICL: SICL is a (perhaps futile) attempt to re-implement Common Lisp from scratch, hopefully using improved programming and bootstrapping techniques. See https://github.com/robert-strandh/SICL
<ixelp>
GitHub - robert-strandh/SICL: A fresh implementation of Common Lisp
<hayley>
Well, define ANF. I guess the Cleavir IR has a similar invariant, that the results of all trivial computations have "names" (locations).
Oladon has quit [Read error: Connection reset by peer]
<jobhdez>
a normal form -consists of atomic expressions and complex expressions; eg temp = 10 + -3 -> temp_1 = -3; temp = 10 + temp_1
Oladon has joined #commonlisp
<beach>
For Common Lisp, you need more than that. You need to represent things like non-local control transfer and the creation of entries in the dynamic environment.
<jobhdez>
yeah but anf consists of more translations
<beach>
To using ANF instead of what we are currently using.
<jobhdez>
of course not
<jobhdez>
i was just asking
<beach>
OK.
<jobhdez>
:)
<hayley>
Might's article reassures me that we have all the benefits of ANF already.
<hayley>
The sea of nodes is cooler though.
<beach>
Yeah, we should use sea-of-nodes at some point.
notzmv has quit [Ping timeout: 248 seconds]
alcor has joined #commonlisp
<jobhdez>
will SICL be a more "modern" common lisp with new optimizations and so on?
<beach>
I hope so. We already designed a better algorithm for generic dispatch, and we designed a technique for call-site optimization that I think will work quite well.
<beach>
We invented some minor things as well, like path replication.
<beach>
But mainly, it will be more maintainable, more modular, and it will have better support for debugging.
<jobhdez>
thats awesome. implementing common lisp from scratch is a massive undertaking.
<beach>
Yes, but in ways I couldn't predict.
<beach>
Like, the compiler was fairly straightforward (but not simple). But there is lots of work in the details of everything.
<jobhdez>
what turned out being harder than expected?
<beach>
Like the details of the error handling in the package system, for instance. It is non-trivial. But maybe that's just me.
rainthree has joined #commonlisp
<jobhdez>
ill see if i can contribute to your project
<beach>
Great!
jobhdez has quit [Quit: Client closed]
<beach>
You need to know that most of the code is either already extracted to separate repositories, or it will be.
<beach>
So don't look for missing parts in the SICL repository.
<beach>
And, consult with is (in #sicl) before taking anything on.
<Catie>
That is something I like about SICL is that it's got all these papers in its repository. They make for nice reading
<beach>
Thank you!
<Catie>
Oh same to you, one hundred percent
* beach
blushes.
<Catie>
I am curious, the call-site optimization paper uses "we" but you're the only author listed, is that just a standard thing or were there more people who worked on the approach who were unlisted? Or some third thing that I'm not thinking of?
<hayley>
I think it's a standard thing.
<Catie>
Yeah that makes sense
<beach>
Yes, it's a standard thing.
<Catie>
Okay yeah, gotcha
<hayley>
The university wants me to return my copy of the Garbage Collection Handbook next month, just before the second edition is scheduled to be released.
<beach>
So what's your plan? Get them to buy the second edition for you?
occ has quit [Ping timeout: 260 seconds]
dcb has quit [Quit: MSN Messenger 3.8]
ec_ has quit [Ping timeout: 240 seconds]
ec_ has joined #commonlisp
<hayley>
I've only got another semester of study to go, so I'll buy my own copy.
Oladon has quit [Quit: Leaving.]
euandreh has joined #commonlisp
morganw has joined #commonlisp
<alcor>
Is there a standard "prompt" function in CL, for use in (restart-case … (use-value (value) :interactive … value))? I want to prompt the user to type a new value when in an interactive environment.
Alfr has quit [Quit: Leaving]
<alcor>
Something like (prompt "Enter a form to use as a value") resulting in Enter a form to use as a value: _ in an interactive prompt.
<pjb>
alcor: there's *query-io*, and the only such functions are y-or-n-p and yes-or-no-p
<aeth>
I'm immediately thinking of y-or-n-p and yes-or-no-p
<pjb>
So only type supported: boolean.
<aeth>
sadly, just booleans, yes, but it does point to *query-io* as what to read from
<pjb>
But of course, you can find the function you seek in libraries.
<pjb>
or applications.
<aeth>
hmm, it's bidirectional actually
<aeth>
(progn (format *query-io* "Please enter your name: ") (read *query-io*))
<alcor>
Which one? I didn't find something like that in the usual candidates (Alexandria, Serapeum).
<pjb>
(progn (format *query-io* "Please enter your name: ") (finish-output *query-io*) (read *query-io*))
<Gleefre>
[ also name probably should be read with read-line ? ]
<pjb>
#c(1/2 42) is my name.
<aeth>
Gleefre: which suggests why PROMPT doesn't exist while Y-OR-N-P does
<aeth>
because once you don't use a boolean, you probably have a dozen different ways to do the read part
<Gleefre>
Yeah.
dino_tutter has joined #commonlisp
<aeth>
something like READ-LINE works better for names, but what if you want the next prompt to be age?
<alcor>
I want to prompt for LISP value, i.e. via the reader 🤷
<aeth>
which I think uses READ
<alcor>
Actually, scratch that. What if I want to prompt for a CLOS instance. AFAIK, read just *reads*, but what if I want to call some instance factory function.
<Gleefre>
With lisp reader there are some precautions to be made by the way
<Gleefre>
Also you might want to read evaluated vs unevaluated value
<Gleefre>
And you might want to disable #. reader macro
<Gleefre>
And set the correct *package*
* alcor
sees a dozen footguns appear in the distance
<Gleefre>
There exists with-sane-io-syntax iirc
<Gleefre>
*with-standard-io-syntax
<Gleefre>
And then you can modify some variables like setfing *read-eval* to nil. On the clhs page all variables affecting the printer/reader syntax are listed it seems
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life has joined #commonlisp
fuwatou has quit [Remote host closed the connection]
fuwatou has quit [Remote host closed the connection]
<Gleefre>
And it feels nice - for example since reader follows them at read time after (add-symbol-link 'mvb 'multiple-value-bind) I can have syntax hints for mvb as well as for multiple-value-bind
<beach>
alcor: Be a bit more careful about terminology, please. There is no such thing as a CLOS instance, or a CLOS class. Every Common Lisp object is an instance of a class, and every class is a CLOS class, because classes didn't exist before CLOS. Also a class is definitely an object.
<beach>
alcor: You may want to use STANDARD-OBJECT, STANDARD-CLASS, and instance of STANDARD-CLASS for what you want to describe.
fuwatou has joined #commonlisp
dino_tutter has quit [Quit: Leaving]
Josh_2 has joined #commonlisp
notzmv has joined #commonlisp
euandreh has quit [Remote host closed the connection]
cage has joined #commonlisp
scymtym has joined #commonlisp
dino_tutter has joined #commonlisp
rainthree has quit [Ping timeout: 240 seconds]
Nilby has quit [Server closed connection]
chrcav has quit [Ping timeout: 258 seconds]
chrcav has joined #commonlisp
random-nick has joined #commonlisp
shka has quit [Ping timeout: 258 seconds]
tyson2 has joined #commonlisp
rainthree has joined #commonlisp
dino_tutter has quit [Remote host closed the connection]
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
tetsuo9_ has joined #commonlisp
splittist_ has joined #commonlisp
splittist_ has quit [Ping timeout: 240 seconds]
GreaseMonkey has quit [Remote host closed the connection]
tetsuo9__ has quit [Ping timeout: 240 seconds]
dino_tutter has joined #commonlisp
greaser|q has joined #commonlisp
dino_tutter has quit [Ping timeout: 240 seconds]
attila_lendvai has joined #commonlisp
attila_lendvai has quit [Ping timeout: 240 seconds]
Josh_2 has quit [Ping timeout: 240 seconds]
habamax has quit [Quit: ERC 5.4 (IRC client for GNU Emacs 28.2)]
azimut has joined #commonlisp
dino_tutter has joined #commonlisp
<jcowan>
beach: If all classes are CLOS classes and vice versa (and they are), then "class" and "CLOS class" are absolute synonyms, and it seems to me to be pedantic to complain about the use of one rather than the other.
<beach>
You missed the context. I complain when "CLOS class" is used to distinguish a class from some other class, which by definition can not exist.
<beach>
... and when "CLOS instance" is used to indicate a subset of class instances, when every Common Lisp datum is an instance of some class, so that every Common Lisp datum is a "CLOS instance".
lasher003 has joined #commonlisp
lasher003 has left #commonlisp [#commonlisp]
attila_lendvai has joined #commonlisp
lasher003 has joined #commonlisp
lasher003 has quit [Client Quit]
<jackdaniel>
structures predate clos inclusion, so the structure-class could be validly perceived as non-clos. I don't think that it is ambiguous when someone says clos instance when they mean a standard-object
<jackdaniel>
(that said, indeed structures are retrofitted into clos, so technically you are correct)
<beach>
It is not ambiguous in that I know roughly what they are trying to say, though it can often be STANDARD-OBJECT or instance of STANDARD-CLASS. But I think it is important to use correct terminology, if for nothing else to avoid confusing newbies.
robin has quit [Ping timeout: 248 seconds]
ec_ has joined #commonlisp
<jackdaniel>
I wonder whether newbies are more confused by non-ambiguous terminology or by discussing what is the correct terminology
<beach>
*sigh*
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
<pve>
Hello! Is there a function that will tell me whether the point is at the beginning of a symbol? I.e. |abc => T and ab|c => NIL. I'm drawing a blank trying to implement this.
<pve>
ugh wrong channel
attila_lendvai has quit [Ping timeout: 240 seconds]
Lycurgus has joined #commonlisp
green_ has quit [Ping timeout: 268 seconds]
Lycurgus has quit [Quit: Exeunt: personae.ai-integration.biz]
bitmapper has joined #commonlisp
samedi has joined #commonlisp
mgl has joined #commonlisp
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
jobhdez has joined #commonlisp
<pve>
Hi-Angel: wow it works, thanks.. does "<" actually indicate "beginning of symbol"?
<pve>
oh so sorry, i did it again
<pjb>
In emacs regexps, \< means beginning of word. Not just <.
<jobhdez>
ok thanks. do you use slime yourself pjb?
<pjb>
Yes. Slime works reasonably well, on a wide range of implementations. This is an advantage. Notably the debugger, sldb has the same commands over all implementations.
random-nick has quit [Ping timeout: 258 seconds]
random-nick has joined #commonlisp
pok has quit [Server closed connection]
pok has joined #commonlisp
pok has quit [Changing host]
pok has joined #commonlisp
MetaYan has quit [Server closed connection]
MetaYan has joined #commonlisp
Oladon has joined #commonlisp
cmack` has quit [Ping timeout: 240 seconds]
NotThatRPG has joined #commonlisp
fuwatou has quit [Ping timeout: 252 seconds]
samedi has quit [Remote host closed the connection]
samedi has joined #commonlisp
jamesmartinez has quit [Ping timeout: 255 seconds]
jamesmartinez has joined #commonlisp
jamesmartinez has quit [Remote host closed the connection]
jobhdez has quit [Ping timeout: 246 seconds]
robin has joined #commonlisp
kmroz_ has quit [Server closed connection]
kmroz has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
Oladon has quit [Quit: Leaving.]
tevo has quit [Ping timeout: 258 seconds]
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
dino_tutter has quit [Quit: Leaving]
dino_tutter has joined #commonlisp
dino_tutter has quit [Ping timeout: 240 seconds]
mgl has quit [Quit: Client closed]
Shinmera has quit [Server closed connection]
dino_tutter has joined #commonlisp
Shinmera has joined #commonlisp
ns12 has quit [Quit: bye]
ns12 has joined #commonlisp
occ has joined #commonlisp
<Gleefre>
I wrote a hack that enables symbol-links on sbcl at runtime so that they are easy to try out.