ralt has quit [Quit: Connection closed for inactivity]
torbo has quit [Remote host closed the connection]
Lycurgus has joined #lisp
Lycurgus has quit [Remote host closed the connection]
terpri_ has joined #lisp
tristero has quit [Ping timeout: 246 seconds]
terpri has quit [Ping timeout: 244 seconds]
__jrjsmrtn__ has joined #lisp
_jrjsmrtn has quit [Ping timeout: 240 seconds]
whiteline_ has quit [Ping timeout: 246 seconds]
wxie has joined #lisp
terpri_ is now known as terpri
rumbler31 has joined #lisp
igemnace has joined #lisp
bitmapper has quit [Ping timeout: 256 seconds]
cosimone has quit [Quit: Quit.]
shifty has joined #lisp
hsaziz has joined #lisp
borei has quit [Ping timeout: 244 seconds]
EvW1 has quit [Ping timeout: 244 seconds]
borei has joined #lisp
CodeSpelunker has joined #lisp
gaqwas has quit [Remote host closed the connection]
CodeSpelunker has quit [Read error: Connection reset by peer]
hsaziz has quit [Quit: hsaziz]
orivej has joined #lisp
aaaaaa has joined #lisp
caltelt has quit [Ping timeout: 256 seconds]
wxie has quit [Ping timeout: 240 seconds]
Oladon has quit [Quit: Leaving.]
orivej has quit [Quit: No Ping reply in 180 seconds.]
Oladon has joined #lisp
orivej has joined #lisp
edgar-rft has quit [Quit: Leaving]
lucasb has quit [Quit: Connection closed for inactivity]
Bike has quit [Quit: Lost terminal]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
Alfr__ has joined #lisp
Alfr_ has quit [Ping timeout: 260 seconds]
dominic34 has quit [Ping timeout: 264 seconds]
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
CodeSpelunker has joined #lisp
z3t0 has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life_ is now known as Lord_of_Life
CodeSpelunker has quit [Quit: CodeSpelunker]
z3t0 has quit [Ping timeout: 256 seconds]
igemnace has quit [Ping timeout: 272 seconds]
dominic34 has joined #lisp
slyrus has joined #lisp
z3t0 has joined #lisp
dominic34 has quit [Ping timeout: 260 seconds]
igemnace has joined #lisp
mindCrime has quit [Ping timeout: 244 seconds]
shifty has quit [Ping timeout: 256 seconds]
<beach>
Good morning everyone!
<aaaaaa>
beach: good morning indeed
mrcom has quit [Read error: Connection reset by peer]
Alfr__ has quit [Quit: Leaving]
mrcom has joined #lisp
mindCrime has joined #lisp
shangul has joined #lisp
<Fare>
Good evening!
rumbler31 has quit [Remote host closed the connection]
<shangul>
Fare, good morning :P
rumbler31 has joined #lisp
rumbler31 has quit [Ping timeout: 256 seconds]
nirved has joined #lisp
<fe[nl]ix>
god morgon till alla
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
<vegai>
huomenta vain
bhartrihari has joined #lisp
narimiran has joined #lisp
bocaneri has joined #lisp
mbrumlow has quit [Ping timeout: 258 seconds]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
nirved has quit [Ping timeout: 240 seconds]
gravicappa has joined #lisp
mbrumlow has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
technobean has joined #lisp
orivej_ has joined #lisp
orivej has quit [Ping timeout: 256 seconds]
nirved has joined #lisp
rumbler31 has joined #lisp
borei has quit [Ping timeout: 260 seconds]
bsd4me has quit [Quit: Leaving]
Oladon has quit [Quit: Leaving.]
karlosz has joined #lisp
penguwin has quit [Quit: Ping timeout (120 seconds)]
penguwin has joined #lisp
jariyah has joined #lisp
orivej has joined #lisp
orivej_ has quit [Ping timeout: 264 seconds]
Alfr has joined #lisp
narimiran has quit [Quit: leaving]
treflip has joined #lisp
<phoe>
dzień dobry
<treflip>
доброе утро
Inline has joined #lisp
Inline has quit [Remote host closed the connection]
<Fare>
bonjour
Inline has joined #lisp
<TMA>
dobré ráno
SenasOzys has joined #lisp
iissaacc has joined #lisp
mangul has joined #lisp
shangul has quit [Ping timeout: 260 seconds]
<beach>
Let me say this again: If y'all are bored, I can give you some SICL-related tasks to accomplish.
_whitelogger has joined #lisp
<contrapunctus>
beach: silence 😆
bhartrihari has left #lisp ["Disconnected: closed"]
<beach>
Yeah, interesting.
<contrapunctus>
I'd try, but I know neither compilers nor as much CL as I'd like. Instead, I'm trying to design a set of malleable programs, exploring at least CL (+ CLIM) and Smalltalk as solutions.
<beach>
Good. CLIM/McCLIM is an essential part of what I want to see in the future.
treflip has quit [Quit: WeeChat 2.6]
gaqwas has quit [Remote host closed the connection]
treflip has joined #lisp
pve has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
Lycurgus has joined #lisp
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
oxum has quit [Ping timeout: 240 seconds]
rwcom34174911642 has joined #lisp
mindCrime has quit [Ping timeout: 240 seconds]
Bourne has joined #lisp
karlosz has quit [Quit: karlosz]
jariyah has quit [Quit: Connection closed for inactivity]
aaaaaa has quit [Quit: leaving]
oxum has joined #lisp
iissaacc has quit [Ping timeout: 240 seconds]
wxie has joined #lisp
Bourne has quit [Ping timeout: 240 seconds]
rgherdt has joined #lisp
oxum has quit [Ping timeout: 265 seconds]
karlosz has joined #lisp
wxie has quit [Ping timeout: 240 seconds]
orivej has quit [Ping timeout: 264 seconds]
orivej_ has joined #lisp
shifty has joined #lisp
karlosz has quit [Quit: karlosz]
oxum has joined #lisp
rwcom34174911642 has quit [Ping timeout: 246 seconds]
<beach>
Actually, I do have a task for someone who would be interested in contributing to the SICL project. The FORMAT module is one of the first modules I wrote, and it is not particularly coupled to the rest of SICL, so it could be extracted to a separate repository. There are a few directives missing, so those are additional tasks to work on.
<beach>
And the directive interpreter exists, but the directive compiler should be written at some point. The current (huge) file format.lisp should be split up into several smaller files, probably with the code for one directive in each file. And a test suite is needed, probably mostly taken from the ANSI test suite I would imagine.
Lycurgus has quit [Remote host closed the connection]
<beach>
Two systems should be supplied, one for "intrinsic" use, i.e. in a system that does not already have FORMAT, and one for "extrinsic" use, i.e. for testing in a system that has FORMAT that we don't want to clobber. Each system should have an appropriate package definition.
iissaacc has joined #lisp
nirved has quit [Ping timeout: 240 seconds]
<beach>
It would be possible for a relative newbie to take on this task, in which case, guidance will be provided.
nirved has joined #lisp
bhartrihari has joined #lisp
Bourne has joined #lisp
v88m has quit [Ping timeout: 264 seconds]
oxum has quit [Remote host closed the connection]
rixard_ has quit []
jonatack has quit [Quit: jonatack]
Ven`` has joined #lisp
Bourne has quit [Ping timeout: 240 seconds]
Bourne has joined #lisp
jonatack has joined #lisp
iissaacc has quit [Ping timeout: 256 seconds]
orivej_ has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
iissaacc has joined #lisp
mangul has quit [Ping timeout: 260 seconds]
iissaacc has quit [Ping timeout: 256 seconds]
seok has joined #lisp
Bourne has quit [Remote host closed the connection]
rixard has joined #lisp
iissaacc has joined #lisp
random-nick has joined #lisp
Bourne has joined #lisp
Bourne has quit [Remote host closed the connection]
Bourne has joined #lisp
gaqwas has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
igemnace has quit [Remote host closed the connection]
wxie has joined #lisp
space_otter has quit [Remote host closed the connection]
gaqwas has joined #lisp
Codaraxis__ has joined #lisp
jackdaniel has quit [Remote host closed the connection]
Codaraxis_ has quit [Ping timeout: 265 seconds]
wxie has quit [Ping timeout: 260 seconds]
karlosz has joined #lisp
edgar-rft has joined #lisp
ayuce has joined #lisp
shangul has joined #lisp
gaqwas has quit [Remote host closed the connection]
karlosz has quit [Quit: karlosz]
Codaraxis__ has quit [Remote host closed the connection]
shifty has quit [Ping timeout: 256 seconds]
shifty has joined #lisp
karlosz has joined #lisp
iissaacc has quit [Remote host closed the connection]
ggole has joined #lisp
iissaacc has joined #lisp
oxum has joined #lisp
karlosz has quit [Quit: karlosz]
ajithmk has joined #lisp
treflip has quit [Quit: WeeChat 2.6]
v0|d has quit [Ping timeout: 246 seconds]
gko_ has joined #lisp
EvW has joined #lisp
jackdaniel has joined #lisp
<jackdaniel>
#/j #ecl
FennecCode has quit [Ping timeout: 244 seconds]
renzhi has joined #lisp
<phoe>
;; debugger invoked on a SB-INT:SIMPLE-READER-ERROR: no dispatch function defined for #\/
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
Inline has quit [Ping timeout: 240 seconds]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
liberliver has joined #lisp
lisp373 has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
Inline has joined #lisp
<lisp373>
Hey guys, is there a way to undefine a method? I get the "attempt to add the method ... but the method and generic function differ in whether they accept" error
<phoe>
lisp373: or (fmakunbound #'foo) for the nuclear version
<Inline>
welp, is it added when it errors out before ?
<phoe>
I usually do the nuclear version because it's faster
<phoe>
this nukes the whole generic function.
<beach>
lisp373: It is unlikely that the method was added if you get that error.
<Inline>
and what about the machine memory thereof ?
<Inline>
does it need gc too ?
<phoe>
what do you mean, machine memory
rgherdt has left #lisp ["Leaving"]
<phoe>
GFs are collected just like everything else
rgherdt has joined #lisp
rgherdt has left #lisp ["Leaving"]
FennecCode has joined #lisp
<lisp373>
phoe: (fmakunbound 'foo) worked, thanks man
<lisp373>
beach: methinks it was though
<beach>
I see. Strange.
<beach>
What implementation?
<lisp373>
sbcl
<beach>
Hmm.
<lisp373>
it's when i change the argument list that I get this error
<beach>
I see. Yes, that I can imagine.
<phoe>
oh, right, (defgeneric foo ()) (defmethod foo (&key x)) is going to error on DEFMETHOD
<phoe>
and then the method is not added
<beach>
Right, but what if the generic function is reinitialized with a different argument list.
<pve>
lisp373: the generic function was surely created, but probably not the method
<phoe>
that's going to signal an error if methods were already added to it
<phoe>
otherwise it'll work
<lisp373>
phoe: Ok, yeah, I see
<lisp373>
i mean pve:
<lisp373>
i mean you guys are all wonderful
<phoe>
lisp373: <3
<lisp373>
: )
jariyah has joined #lisp
EvW has quit [Ping timeout: 260 seconds]
gravicappa has quit [Ping timeout: 256 seconds]
<_death>
it's easy to find and remove a method using the slime inspector
Bourne has quit [Remote host closed the connection]
iissaacc has quit [Ping timeout: 256 seconds]
lucasb has joined #lisp
toorevitimirp has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
toorevitimirp has joined #lisp
puchacz has joined #lisp
<puchacz>
hi, has anybody tried sly as slime replacement? and is happy with it?
<phoe>
yes, I know multiple success stories
<puchacz>
I am happy with slime, but as usual - maybe I am missing something I don't even know about
<phoe>
I know that mfiano uses it; I'm a slime user myself
ssake has quit [Ping timeout: 246 seconds]
<contrapunctus>
New to CL...not a fan of how the number for ABORT* changes in different situations. I'd rather have numbers for common restarts in the beginning 🤔
<contrapunctus>
(Oh, and using SLIME)
ssake has joined #lisp
<phoe>
contrapunctus: multiple ABORT restarts may mean different things, that's why there's multiple
<beach>
We need a revised standard.
toorevitimirp has quit [Read error: Connection reset by peer]
<phoe>
beach: I know you're jaded, but that comment actually brings nothing to the discussion
<contrapunctus>
beach: some were actually discussing that in ##lisp the other day
<contrapunctus>
I mentioned CL21, so some CL users said that the changes they want can't be made as libraries. So I suggested making a revised community standard.
<beach>
phoe: I'll be quiet.
<phoe>
that's been suggested countless times now and the main issue is twofold
<phoe>
1) someone needs to actually go and do that, and these people are either gonna be volunteers or someone finds a funding source
<phoe>
2) someone needs to actually go and have implementers adopt it, and these people are either gonna be volunteers or someone finds a funding source
<phoe>
issue number 1 is hard
<phoe>
and issue number 2 is much much harder
<beach>
phoe: You forget that those people have to be competent in language design and compiler design.
<phoe>
yes, that's a part of issue 1) being hard.
<phoe>
but then again, we're talking about a new one whereas the old one is still heavily unmaintained and there's no good user-facing CL documentation that isn't a book or the good ol' CLHS that is not meant to be user-facing documentation
<phoe>
I hope to bring CLUS back from the dead soon and work on fixing this a wee bit
<beach>
Great!
<phoe>
once we have that, we can create a separate version that is not *the* specification but is actually useful because it contains better examples and bugfixes and what not, and then implement WSCL on top of that
<contrapunctus>
WSCL?
<phoe>
Well-Specified Common Lisp
<beach>
phoe: I agree.
<contrapunctus>
lol
<phoe>
basically a series of further constraints on ANSI CL
Posterdati has joined #lisp
<beach>
contrapunctus: It is not a joke.
<phoe>
which leaves a lot of stuff undefined.
<contrapunctus>
Oh.
<phoe>
and these should be meaningful errors instead
<phoe>
and then, only then, when we have a good and nice stable base, we can possibly think of making an unstable branch of Common Lisp that's called Uncommon Lisp or whatever that can then be a place for further language evolution and experimentation
<contrapunctus>
I figured the actual hard part would be getting people to agree on the changes.
<phoe>
but that's a vision that'll take at least a few years of work to happen
<phoe>
it is a task so impossible that the only viable strategy is to get no one to agree and just do the changes oneself
<phoe>
that's why we have UIOP:QUIT, the only reasonably standardized and ubiquitous way of quitting a Lisp image
<beach>
contrapunctus: I don't think it will be hard to get them to agree on WSCL, because the changes suggested are already implemented in most implementations.
<puchacz>
phoe: as a matter of naming, there was/is an Uncommon Lisp library - a web thing that uses continuations in an interpreted subset of Common Lisp.... so here you go, Common Lisp extended
technobean has quit [Quit: ERC (IRC client for Emacs 26.3)]
<contrapunctus>
beach: that's great, and I'm sure it meets the needs of at least some users if it was implemented and you were motivated to specify it. But the fact that it's already implemented means it is by definition not something that those people wanted...so there's room for more 🙂
<beach>
contrapunctus: But, since you are "new to CL", you don't know that this issue is being discussed roughly once a month or so, typically suggested by people who have absolutely no idea why Common Lisp was created the way it was, no idea what any of their suggested changes would have as consequences to the ability to compile the language, etc.
<phoe>
contrapunctus: WSCL is actually already implemented a real lot, like, implementations do common sane things in many of these cases
<contrapunctus>
beach: oh, I'm not suggesting any changes myself. It was some folks who were more experienced than me.
<phoe>
a big chunk of the work is just codifying the status quo.
<contrapunctus>
Oh, they're present here too. I could ping them, if you want.
<beach>
contrapunctus: So the essence of my counter argument is that most people use languages on a daily basis that don't even HAVE a standard. So why do they suddenly want every feature to be standardized for Common Lisp. Why not use a library that is widely agreed upon?
<phoe>
I don't think it's this necessary
<phoe>
I mean, pinging them
<contrapunctus>
phoe: okay, I won't.
<phoe>
I mean, cl21 is one such library
<beach>
contrapunctus: Maybe it's not clear, but this issue is being discussed over and over again. All the experienced people here already know all the issues and have their ideas about them.
<contrapunctus>
beach: they said these can't be implemented as a library.
<bitmapper>
i mean, of course it can
<phoe>
and cl21 was abandoned and also contained somewhat terrible code
<beach>
contrapunctus: And how would changing the standard magically make it happen?
<beach>
I should stop. I am really not interested in participating in this discussion again today.
<scymtym>
contrapunctus: the SLIME debugger mode (sldb-mode) has keybindings for certain restarts: q - quit, a - abort, c - continue (press C-h m in the debugger buffer to see all)
wsinatra has joined #lisp
toorevitimirp has quit [Ping timeout: 256 seconds]
<phoe>
the way forward is simple: grab your favorite Common Lisp implementation and hit it with a hammer until it behaves in this new way you'd like it to behave in
<contrapunctus>
scymtym: oh, thanks!
<scymtym>
sure
<phoe>
voila, you've created an implementation of a new Lisp dialect
<phoe>
in particular the ANSI CL standard was created because there was a lot to standardize
<phoe>
nowadays perhaps it's a similar situation, with threads, networking, GC/weakness, MOP, Gray streams being ubiquitous everywhere and standardized in a de-facto way via portability libraries
<phoe>
but then again, portability libraries are *all* libraries by definition
wsinatra has quit [Quit: WeeChat 2.9]
retropikzel has joined #lisp
<_death>
many of these are immature or lacking, so we're better off without them being standardized for the moment
<beach>
phoe: A long time ago, I had plans to write a Common Lisp reference. Now I think such a thing would be better suited for a web site.
terpri_ has joined #lisp
<beach>
phoe: Such a thing would a user-facing document covering the entire language.
<phoe>
beach: that's what I want UltraSpec to be in the end
<beach>
Oh, OK.
<phoe>
one thing is a modernized version of the language specification as-is without any fixes
<phoe>
another thing is a user-facing set of documentation describing the whole language with fixes to the text and examples and such
<phoe>
the latter depends on the former, obviously
<phoe>
but that's one thing that the CL ecosystem currently lacks
<beach>
Would you then separate the "specification" part from the "reference" part, or would it be just the reference?
<phoe>
I'd keep the two separate, because some people (most importantly, implementers) will ask the question "what does the specifiaction say?" whereas other people (most importantly, programmers) will ask "how does it work?"
<beach>
I agree.
<beach>
And the reference would obviously refer to the specification for the "truth".
<phoe>
someone suggested some system of comments "over" the original specification that can highlight the issues found with the original text
<phoe>
e.g. the famous PROG2
<beach>
Sure.
<phoe>
that's one more idea I'd like to someday implement.
<beach>
Such a reference would need an entry for almost each operator, class, type, etc. in the specification, but the language would be much more helpful to a user.
<beach>
So one way of starting such a reference would be to solicit contributions in the form of individual entries.
<phoe>
yes
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
<phoe>
once the original specification is wrapped into these new clothes, then contributions will be easy
contrapunctus has joined #lisp
<beach>
Indeed.
<phoe>
the main pain is converting dpANS3 into some lispy format and then presenting this lispy format in some sane way.
<phoe>
we'll see
* phoe
afk for groceries
oxum has quit [Quit: Leaving...]
<beach>
Yeah, I know. That has been a problem from the beginning.
contrapunctus has left #lisp ["Disconnected: closed"]
Lycurgus has joined #lisp
<beach>
phoe: Take care.
<phoe>
perhaps this time we'll succeed
<phoe>
AsTeR has a TeX→Lisp parser of some sort
<phoe>
I've already mentioned it earlier
<beach>
Yeah, I seem to recall that.
<phoe>
I'll want to refactor it and then plug dpANS3 into it and see what comesout
contrapunctus has joined #lisp
<Lycurgus>
the bruise blood i bet
toorevitimirp has joined #lisp
VincentVega has joined #lisp
toorevitimirp has quit [Client Quit]
ajithmk has quit [Quit: Connection closed for inactivity]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life_ is now known as Lord_of_Life
bhartrihari has joined #lisp
Lycurgus has quit [Remote host closed the connection]
shifty has quit [Ping timeout: 256 seconds]
random-nick has joined #lisp
CodeSpelunker has joined #lisp
hiroaki has joined #lisp
gko_ has joined #lisp
toorevitimirp has quit [Ping timeout: 256 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
orivej_ has joined #lisp
orivej has quit [Ping timeout: 265 seconds]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
puchacz has quit [Remote host closed the connection]
CodeSpelunker has quit [Quit: CodeSpelunker]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
hiroaki has quit [Ping timeout: 272 seconds]
hiroaki has joined #lisp
bhartrihari has joined #lisp
random-nick has quit [Quit: quit]
v88m has joined #lisp
random-nick has joined #lisp
orivej_ has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
cosimone has quit [Quit: Quit.]
shidima has joined #lisp
dominic34 has joined #lisp
Inline has quit [Ping timeout: 240 seconds]
guicho has joined #lisp
mangul has joined #lisp
shangul has quit [Ping timeout: 265 seconds]
hiroaki has quit [Ping timeout: 260 seconds]
trystero has joined #lisp
guicho has left #lisp ["ERC (IRC client for Emacs 26.3)"]
hendursaga has joined #lisp
cosimone has joined #lisp
<mfiano>
phoe: Did you figure out what you're going to do regarding the depressing situation?
<phoe>
mfiano: yes
<phoe>
re-reading kmp's words a few times helped
<phoe>
the spec is owned by the community, ANSI CL is a derivative work of it, so is CLHS, so is Franz spec
<phoe>
so we're free to go
OpenZen has joined #lisp
<mfiano>
So that free standard thing was wrong?
<phoe>
it wasn't wrong, the copyright status of dpANS3 is highly dubious, because it's impossible to assert with 100% certainity that we get permission from *everyone* who participated in the discussion
<mfiano>
It mentioned something along the lines of dPANS never making it to the public domain, and explicit permission from the contributors must be obtained for derivative works.
<mfiano>
That KMP post is saying the same thing I gathered: it's unclear what would happen.
<phoe>
the thing is that I think I can depend on kmp's intuition on the matter and go full "it's free real estate" on dpANS3
<phoe>
it seems it's highly unlikely anyone will care enough to sue.
<phoe>
also, it's the only real optionh ere
<phoe>
because the other option is literally writing a new specification from scratch that does not depend in *ANY* way on dpANS or ANSI CL
<phoe>
which will then be mistrusted, because it's not *the* spec or *the* standard that everyone's been following for decades.
<mfiano>
Not saying anyone would get sued, but if it does happen, that could be very damaging to a single user without the funds for a good lawyer.
<jackdaniel>
wasn't the last draft published precisely for sake of avoiding the copyright drama?
<phoe>
and anyway people will go "but what does The Spec™ say" which will cross-pollinate with the new document anyway, casting more legal shadow on the new spec anyway.
orivej has quit [Ping timeout: 256 seconds]
<jackdaniel>
I mean - courts are not blind to the /intention/
orivej_ has joined #lisp
<phoe>
jackdaniel: that's the issue, no one can say for sure
<phoe>
so I see three options here
<phoe>
1) derive from dpANS3\
<phoe>
2) write a brand new specification
<phoe>
3) proclaim CLUS dead
<phoe>
and considering option number three makes me real annoyed
<mfiano>
4) Write a reference for _developers_ that cites the spec where needed
<phoe>
that works too, I guess
<jackdaniel>
I don't see how dpans is related to clus
<phoe>
CLUS was originally an idea of reformatting the specification and integrating errata into it
<mfiano>
I believe phoe wants to separate the spec from the reference for CLUS, modernizing the spec with fancy HTML and fixups
<phoe>
then the idea was split into--- yes, what mfiano said
<mfiano>
reference would be a separate thing, but spec would e a derivative of dpANS
<phoe>
the language reference is doable mostly from scratch, sure thing, but the spec is the spec
<jackdaniel>
I'd just take dpans3 and assume it is public domain, splitting a hair in four will lead you to nowhere
<jackdaniel>
if you are not going to commercialize it, then it may be even in fair use territory
<mfiano>
Regardless, I think one of the contributors would have sent a cease and desist letter at some point to the many distributors of the dpANS documents if it was indeed an issue.
<phoe>
that's one more optimistic thing, right
gaqwas has quit [Ping timeout: 246 seconds]
rumbler31 has quit [Ping timeout: 246 seconds]
orivej_ has quit [Ping timeout: 264 seconds]
orivej has joined #lisp
treflip has quit [Quit: WeeChat 2.6]
shidima has quit [Ping timeout: 256 seconds]
vegai has quit [Ping timeout: 264 seconds]
ineiros has quit [Ping timeout: 265 seconds]
cosimone has quit [Quit: Quit.]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
hiroaki has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
Fare has quit [Ping timeout: 244 seconds]
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
narimiran has joined #lisp
orivej has quit [Ping timeout: 264 seconds]
orivej_ has joined #lisp
shifty has joined #lisp
<aeth>
imo CL21 failed because it (1) was too radical (and a lot of it looked different just for the sake of being different), (2) was one person's tastes (not really consensus-based afaik), (3) oversold itself ("the true successor"), and (4) probably was inefficient (actually making a new Lisp implementation/dialect would let it be efficient)
gravicappa has joined #lisp
<aeth>
Looking at it, I do like the idea of using #/ as a regex reader macro, though
<aeth>
But a few reader macros aren't really good enough reasons to bring in something huge and partially nonidiomatic as a dependency like cl21 or rutils.
<pve>
(3) sounds like the key point
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
<aeth>
Don't underestimate the effect of #4 on adoption, either. I think a lot of people using CL in 2020 are using it over alternatives because it is (or at least can be) fast.
<aeth>
If you make it into just another scripting language with no concern for performance, it doesn't offer much over scripting languages with huge communities like Ruby or Python.
orivej has joined #lisp
bocaneri is now known as Sauvin
<pve>
there's one difference though: you could, if necessary, "drop down to standard lisp"
<aeth>
but then you risk your users liking standard Common Lisp and leaving your library
<pve>
which I imagine would be easier than writing a module in C for python
<pve>
depends on your goals I guess, I would see that as a win
trystero has left #lisp ["WeeChat 2.8"]
<aeth>
I think another thing new "standard libraries" in CL get wrong is that they do things backwards. They do the library and then expect applications to follow, rather than deriving the library based on what their applications actually need.
<aeth>
Standards should follow use, ideally quite a few different use cases from different parties.
<pve>
you mean first making it, and only afterwards finding a problem it solves?
<aeth>
right
<phoe>
there's this weird thing that modifying Common Lisp requires one to modify the standard
<aeth>
I could be wrong, but most of these "new standard library" libraries tend to just look at cool features from other languages to borrow/steal
mindCrime has joined #lisp
<phoe>
seriously, come on, grab CCL and hack at it until it no longer complies
<phoe>
but is also useful in some other new creative way
<aeth>
phoe: Few things require actually modifying the underlying implementations.
<phoe>
aeth: yes
<aeth>
Even fewer require changing the standard.
CodeSpelunker has joined #lisp
<aeth>
e.g. I used to bring up short-float being too precise to use IEEE half-precision floating point as an example, but someone pointed out that the actual standard says "Recommended Minimum Floating-Point Precision and Exponent Size", so implementations actually can just use hardware short-float if they want and they're just lazy.
<pve>
i actually made a working hindley-milner implementation in CL, but never got around to polish it up
<aeth>
phoe: yeah, but (1) it's probably not compatible with the choices I had to make to make Scheme work on CL and (2) I'd rather do language integration at the ASDF level with different extensions than do the #lang foo thing.
<pve>
but that was a long time ago, then later decided to do smalltalk and it's looking much better
<aeth>
phoe: I think I brought up #2 when you linked it to me
<phoe>
yes
<pve>
aeth: so you have scheme that compiles down to CL code?
<pve>
i'm very interested in looking at other people's approaches to this
orivej has quit [Ping timeout: 256 seconds]
orivej_ has joined #lisp
<aeth>
(1) I use %scheme-boolean:f, which is just a constant that evaluates to '%scheme-boolean:f, as the false value. Since in most CLs, NIL is just a symbol not treated specially, it shouldn't really hurt performance, but it separates nil from #f
EvW has joined #lisp
hiroaki has quit [Ping timeout: 272 seconds]
<phoe>
(with-lispcafe "scheme properly pays respects with booleans, whereas CL doesn't")
<aeth>
(2) I invert case to maintain almost all compatibility in a case-sensitive language. Idiomatic CL is writing lower-case that gets automatically upcased, and idiomatic most-other-languages (that don't use camelCase at least) is just writing lower-case that is preserved as lower-case, so this is the easiest interop
<aeth>
(3) I'm going to have (iirc, I left it broken from a partial refactor a while back) a minimal "runtime" that guarantees tail recursion (with a trampoline) and continuations (transforming the Scheme via macro to continuation-passing-style). Any CL entry point will handle this, as well as turning #f into nil
<aeth>
(4) On the CL side, I have two macros, define-scheme-procedure and define-scheme-predicate, where the difference is that the latter turns NIL into #f (i.e. %scheme-boolean:f) while the former treats NIL as the empty list.
<aeth>
(5) Scheme libraries are going to define both an ASDF system and a package for that ASDF system. Since Scheme is a Lisp-1, imports will rebind in a top-level LET. The only issue I see with this is that the symbols in e.g. lists will be namespaced to where they were defined.
<froggey>
I'm curious, why a symbol for false instead of a more anonymous object? like (make-instance 'standard-object)
<phoe>
you might want to refer to it from CL side
<aeth>
froggey: A symbol for false is exactly how CL implementations operate: a symbol for NIL, which is false (and the empty list) so it will basically behave identically.
<aeth>
It'll just test a different thing for EQ when testing for false.
<aeth>
Oh, and (5b) I Lisp-1-ified the DEFTYPE because defining a Scheme type also defines a predicate of the same name, and the names all end in ?. This is because portable Scheme is basically "predicately" typed, e.g. the pair? type, tested with the pair? predicate)
<aeth>
s/predicate)/predicate/
<phoe>
you mean that "pair?" is a type name in scheme?
<aeth>
phoe: Portable Scheme doesn't really have a type system like CL's, it just provides a bunch of predicates to test for if something is of that type or not. So I could have called it something like pair or scheme-cons (or even just cl:cons, it's the same thing) and put it in the same type namespace as CL's, but I decided to call it pair?
<phoe>
I see
<aeth>
That is, it generates (deftype pair? () 'cons) and I could even just do (defun pair? (obj) (typep obj 'pair?) but I made a special case for when a predicate already exists (i.e. CONSP) just in case that's a faster path in the CL compiler (and if the type winds up being a SATISFIES type, things might go exactly backwards).
<aeth>
And the Scheme itself will generate something (for now, not final) like (defun r7rs::pair? (continuation obj) (funcall continuation (pair? obj)))
luna_is_here has quit [Quit: luna_is_here]
ajithmk has quit [Quit: Connection closed for inactivity]
<aeth>
phoe: There are basically three ways the types could work. One is a DEFTYPE with a generated TYPEP predicate, another is an efficient DEFTYPE with a built-in predicate (like CONSP) that should be identical, and the third way is a predicate that's efficient with a SATISFIES in the DEFTYPE.
<aeth>
The Scheme type could be any one of the three.
v0|d has joined #lisp
<aeth>
I'm actually pretty happy of some workarounds I found to avoid SATISFY types where you think they'd be necessary. e.g. even though it looks like zero? is just an ordinary predicate and not a type one, I actually define an efficient type for it, at least afaik. (define-scheme-type* (zero?) zerop `(or (real 0 0) (complex (real 0 0))))
<aeth>
That is, zero? is the predicate ZEROP and the corresponding efficient type is the real from 0 to 0 inclusively or the complex with both parts from 0 to 0 inclusively.
<phoe>
"The imaginary part can be a float zero, but can never be a rational zero, for such a number is always represented by Common Lisp as a rational rather than a complex."
<phoe>
therefore the complex part is unnecessary
<aeth>
phoe: (complex 0.0 0.0)
<aeth>
but, yeah, it could just be (complex (float 0 0))
<phoe>
oh wait! I misread
<phoe>
yes, correct, that's a valid complex
mindCrime has quit [Ping timeout: 260 seconds]
<aeth>
So should I use `(or (real 0 0) (complex (float 0 0))) instead?
<phoe>
I think so, yes
<phoe>
since (complex (rational 0 0)) === (complex (eql 0)) which has no elements
<phoe>
no, wait a second...
<pve>
aeth: that all sounds fascinating, you appear to be much more rigorous than me :)
<phoe>
=== (complex (rational 0 0))
<phoe>
I don't know if the two are equivalent
<phoe>
okay, TYPE= tells me that they are
mindCrime has joined #lisp
mangul has quit [Ping timeout: 240 seconds]
CodeSpelunker has quit [Quit: CodeSpelunker]
whiteline_ has quit [Remote host closed the connection]
<aeth>
pve: I have an advantage in that I'm translating a small specified language into a similar large specified language.
whiteline_ has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
<aeth>
I don't have to design and implement at the same time, I just have to implement, and it's mostly about solving the mismatches.
shifty has joined #lisp
ted_wroclaw has joined #lisp
dilated_dinosaur has quit [Ping timeout: 260 seconds]
dilated_dinosaur has joined #lisp
akoana has joined #lisp
dilated_dinosaur has quit [Ping timeout: 244 seconds]
kpoeck has joined #lisp
dilated_dinosaur has joined #lisp
<pve>
aeth: I'm not tackling the smalltalk standard lib anytime soon.. currently I'm at "smalltalk syntax with CL machinery", so I basically wrapped many (most?) of the standard CL functions
<pve>
but I'm pretty happy with it
CodeSpelunker has joined #lisp
kpoeck has quit [Ping timeout: 245 seconds]
CodeSpelunker has quit [Remote host closed the connection]
<pve>
aeth: I'm going to upload the code to github soonish, but if you're interested, here are a couple of pictures I like to show people that hopefully give an idea of the current state:
<pve>
Just finished writing the indendation code for the emacs mode, which was much harder than I expected. I'm not ashamed to admit I spent waay to much time fiddling with it.
zulu-inuoe has quit [Ping timeout: 240 seconds]
<aeth>
pve: So how do you get the interactive, image-based Smalltalk development environment that Smalltalk is famous for?
<pve>
no idea
orivej_ has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
<aeth>
pve: I haven't done ASDF integration yet but I've probably lost a few days every now and then trying
narimiran has quit [Ping timeout: 246 seconds]
<pve>
yeah that part wasn't fun
<aeth>
it looks like you do everything in a [ ... ] reader macro, though, while I am trying for a slightly different technique, essentially trying to make the .scm files indistinguishable from ordinary Scheme files.
<aeth>
(and it has to have a custom reader, since there are minor points of syntactic incompatibility)
<pve>
the [ ... ] is only in lisp files, when you mix code
<aeth>
ah
<pve>
otherwise they're code blocks
<pve>
(lambdas)
<pve>
I tried to make the asdf integration optional though, so an app/script is loadable without having to make an asd file
<aeth>
For me, ASDF integration is pretty mandatory afaik because that's the logical way to handle Scheme libraries, beyond just using packages.
<pve>
dependencies are still loaded using asdf, of course
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
luna_is_here has joined #lisp
v88m has quit [Ping timeout: 264 seconds]
<pve>
aeth: when you say "asdf integration" do you mean being able to do (asdf:load-system "my-scheme-lib")?
<aeth>
Notice how R7RS's define-library seems to cover both DEFPACKAGE and DEFSYSTEM in scope... In this case, (scheme base) could represent an underlying package scheme/base (or airship-scheme/scheme/base) and an underlying system airship-scheme/scheme/base
<aeth>
And as a placeholder for now I have it import from the not-yet-written (airship r7rs)
<pve>
ah, I didn't know define-library worked like that
<aeth>
I could probably extend it to add declarations for description/version/author/maintainer/license/homepage/bug-tracker/source-control and make it map to DEFSYSTEM more clearly
<aeth>
It can also have (include "foo.scm") in the definition, which basically maps to :components
Bike has joined #lisp
cosimone has joined #lisp
ggole has quit [Quit: Leaving]
<pve>
aeth: I have no idea if this will help, but here's what I had to do:
<pve>
thats all the asdf specific code i had to write
<pve>
although your situation seems a bit different
kpoeck has joined #lisp
<pve>
i mean that with that code, the custom asdf components can be used in asd-files (in the second imgur picture, top right)
<aeth>
right, afaik, I would just have to parse (include "foo.scm") as defining a Scheme source file component, with the main complication being something like (include "bar/foo.scm") and other than that, everything cleanly maps either to DEFSYSTEM or DEFPACKAGE
<aeth>
The hard part might be getting Quicklisp to detect them as systems without (1) being a top-level .ASD file and (2) being a .ASD file at all, but package-inferred-system exists as a thing that creates an ASDF "sub"system for each file and it works fine, so there's probably a way to do it from the top level .ASD file
<pve>
I could be wrong, but "bar/foo.lisp" might work in asdf
<pve>
like out of the box
<aeth>
I've always seen it as defining a new thing... "module" or something? For each subdirectory.
<aeth>
it definitely does something fancy when package-inferred-system is being used, though, since it's all... inferred from names that match the paths
<pve>
no I meant (:file "bar/foo")
<pve>
or does (include "bar/foo.scm") mean something else?
<aeth>
yeah, sorry for being unclear, I mean, I've never seen (:file "bar/foo") I've always seen it as defining something for "bar" and then putting "foo" under it
shifty has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
<pve>
yeah, usually the :module component is used when you have a subdirectory containing some code
<pve>
but did you know that asdf automagically looks for the definition of teh system foo/bar in foo.asd?
<pve>
so it considers foo/bar a subsystem of foo
<phoe>
wait a second - in ASDF, (:file "foo/bar/baz/quux") means quux.lisp in a directory subtree foo/bar/baz/
<pve>
aeth: but I imagine package-inferred should also work for you
<aeth>
pve: well, not quite, since that's one-system-and-package-per-file, while Scheme's library system is closer to "normal" CL, where you have a separate file listing all of the files to include
karlosz has quit [Remote host closed the connection]
<phoe>
good night
EvW has quit [Ping timeout: 256 seconds]
kpoeck has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 256 seconds]
orivej_ has joined #lisp
Bourne has joined #lisp
hhdave has quit [Ping timeout: 256 seconds]
hhdave has joined #lisp
pve has quit [Quit: leaving]
paul0 has joined #lisp
amalawi has quit [Remote host closed the connection]
notzmv has quit [Ping timeout: 256 seconds]
luna_is_here has joined #lisp
iissaacc has joined #lisp
satousan has joined #lisp
<Fare>
If sharks^WIP lawyers smell enough money to go after a new CL standard, we've already won.
<Fare>
At best they'll get us to rename the project and do a clean room rewrite. But they only would do that if there's a big enough community for the thing to matter.
notzmv has joined #lisp
bsd4me has joined #lisp
cosimone has quit [Quit: Quit.]
iissaacc has quit [Ping timeout: 240 seconds]
random-nick has quit [Ping timeout: 264 seconds]
hhdave has quit [Quit: hhdave]
satousan has quit [Quit: WeeChat 2.3]
abhixec has quit [Ping timeout: 264 seconds]
madage has quit [Ping timeout: 240 seconds]
Fare has quit [Ping timeout: 244 seconds]
orivej_ has quit [Ping timeout: 240 seconds]
satousan has joined #lisp
orivej has joined #lisp
brettgilio has quit [Remote host closed the connection]