treflip has quit [Quit: good night and happy new year!]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
s-liao has joined #commonlisp
karlosz has joined #commonlisp
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
s-liao has quit [Quit: Client closed]
s-liao has joined #commonlisp
Jing has quit [Remote host closed the connection]
pranavats has left #commonlisp [Error from remote client]
s-liao has quit [Quit: Client closed]
s-liao has joined #commonlisp
Jing has joined #commonlisp
kevingal has quit [Remote host closed the connection]
Everything has quit [Quit: leaving]
Everything has joined #commonlisp
Bike has quit [Quit: Lost terminal]
rgherdt__ has quit [Ping timeout: 268 seconds]
s-liao has quit [Ping timeout: 256 seconds]
Oladon has quit [Quit: Leaving.]
taiju has quit [Ping timeout: 260 seconds]
taiju has joined #commonlisp
Oladon has joined #commonlisp
dre has joined #commonlisp
s-liao has joined #commonlisp
pk has quit [Remote host closed the connection]
pk has joined #commonlisp
random-nick has quit [Ping timeout: 252 seconds]
_73 has joined #commonlisp
nij- has joined #commonlisp
<nij->
I'm curious about why most functions defined in CL weren't defined as generic functions. For example, it'd make sense to me if I can extend the function '+. This is not to complain; I'm just curious why the decision was made that way.
<White_Flame>
clos was pretty new when the standard was coming together, iirc
<White_Flame>
and it's a lot of legacy in general
<White_Flame>
at the very least, the MOP wasn't ready in time for the spec
<nij->
I see..
<nij->
Kinda related: does the advent of local-nickname in a defpackage construct counted as a violation of the CL standard?
<nij->
I consider it as an extension that doesn't (seem to) break backward compatibility.
<White_Flame>
I'm sure others can fill in more than I can, but I would suspect that speed & optimization might have had a part in it, too, as generic function calls were much heavier weight than standard functions
<White_Flame>
regarding PLNs, I'd guess the most likely violation would be in the symbol reader if any
<etimmons>
Implementations are allowed to extend the options
<nij->
"Since implementations might allow extended options an error of type program-error should be signaled if an option is present that is not actually supported in the host implementation."
<nij->
I'm very confused by this sentence..
<White_Flame>
add a comma after "extended options"
<White_Flame>
iow, unknown options should error out and not be ignored
<nij->
But it's ok for implementations to add their customized options?
<White_Flame>
yes, the spec says implementations might do that
<White_Flame>
btw, I presume that FIND-PACKAGE finds local nicknames based on the current value of *PACKAGE*?
<White_Flame>
I guess that wording probably wouldn't violate the spec, either
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
<rotateq>
Like with MAKE-HASH-TABLE in SBCL.
<nij->
Woah this dude is brave enough to make CL generic.. https://github.com/alex-gutev/generic-cl I'm amazed. Need to study that. Anyone had experience using it?
amb007 has quit [Read error: Connection reset by peer]
waleee has quit [Ping timeout: 240 seconds]
Devon is now known as Devor
Devor is now known as Devon
thomaslewis has joined #commonlisp
dre has quit [Ping timeout: 245 seconds]
thomaslewis has left #commonlisp [#commonlisp]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
eddof13 has joined #commonlisp
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
karlosz has quit [Quit: karlosz]
huckleberry has joined #commonlisp
philb2 has joined #commonlisp
philb2 has quit [Read error: Connection reset by peer]
huckleberry has quit [Quit: disconnected]
philb2 has joined #commonlisp
philb2 has quit [Read error: Connection reset by peer]
<beach>
Good morning everyone! And a Happy New Year!
<nij->
Happy New Year :)
taiju has quit [Ping timeout: 250 seconds]
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
Oladon has quit [Quit: Leaving.]
semz has quit [Ping timeout: 268 seconds]
<beach>
nij-: An implementation is allowed to have a generic function where the standard doesn't require it. But + is not one such function. It can't reasonably be generic.
myrrh_ has joined #commonlisp
<beach>
The Dylan language (if I remember it correctly) specifies that + calls BINARY-+ (or something like that) when appropriate, and BINARY-+ is specified to be generic. That makes more sense.
myrrh has quit [Ping timeout: 240 seconds]
pranavats has joined #commonlisp
semz has joined #commonlisp
lisp123 has joined #commonlisp
taiju has joined #commonlisp
lisp123 has quit [Ping timeout: 256 seconds]
s-liao has quit [Quit: Client closed]
tyson2 has quit [Remote host closed the connection]
Everything has quit [Quit: leaving]
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
kaph_ has joined #commonlisp
pranavats has left #commonlisp [Error from remote client]
alvaro121 has joined #commonlisp
alvaro121_ has quit [Ping timeout: 268 seconds]
kaph_ has quit [Quit: Leaving]
jstoddard has left #commonlisp [ERC (IRC client for Emacs 27.1)]
<jeosol>
Good morning all. Happy New Year from CST zone
jealousmonk has quit [Quit: ERC (IRC client for Emacs 27.1)]
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 256 seconds]
miique_ has quit [Ping timeout: 268 seconds]
myrrh_ is now known as myrrh
myrrh has quit [Changing host]
myrrh has joined #commonlisp
lisp123 has joined #commonlisp
hexology has quit [Quit: hex on you ...]
hexology has joined #commonlisp
s-liao has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
pranavats has joined #commonlisp
<lisp123>
Happy New Year All!
<Catie>
Hey, happy new year!
pranavats has left #commonlisp [Error from remote client]
lisp123 has quit [Remote host closed the connection]
<phoe>
the poncat image is a raster PNG image loaded via imago, everything else is vector stuff from vecto
<phoe>
I'll clean this up and make a PR soon
<ck_>
looks neat
<ck_>
"but what does it /mean/?"
<phoe>
I'm generating tiles for a board game
<ck_>
yes I remember, the question was what that tile means. 1 what? can I now pass go and collect dollar two hundred?
<White_Flame>
(imagine how annoying it would be wearing huge jingle bells on your head right next to your ears)
<Catie>
White_Flame: I've worn jingle bell earrings, I kind of like them
<Catie>
They're not huge though
<White_Flame>
re the png, if not obvious
<Catie>
Oh. Oh, I'm a fool
<ck_>
White_Flame: so it's a debuff then, got it
<phoe>
ck_: welp, sorry
<phoe>
basically a tile that has a single melee attack and that acts in initiative 1 - though that likely doesn't tell you much
<ck_>
it tells me enough, thanks for the context
hexology has joined #commonlisp
<lisp123>
Would it be fair to say, any non trivial function API meant for external use should use keyword parameters exclusively to aide in documenting the arguments to a function call, within the call, and to future proof the interface (allowing for the addition of new keyword parameters in the future), and then leave it to the programmer to write their own convenience functions to then avoid having to keep writing keyword parameters in their call?
<ck_>
I wouldn't agree to that in these general terms, but it doesn't sound like a bad idea for an interface with many or varying arguments
<pjb>
lisp123: indeed, it may be a good style to use only mandatory and &key parameters for API functions.
pve has joined #commonlisp
<lisp123>
pjb & ck_: Thanks. I will add that to my personal style guide
<beach>
lisp123: Your functions could not be generic then.
<beach>
lisp123: Also, terminology issue, in a function call, we pass "arguments", not "parameters".
<lisp123>
beach: Thanks. By "keyword paramters in their call" I was referring to the :something-something part vs. for example the "3" in ':something-something 3'. Is there a term for that (keyword option? keyword argument?)
Colleen has quit [Quit: Colleen]
Colleen has joined #commonlisp
<beach>
I would just call it a "keyword" or perhaps an "argument keyword".
<lisp123>
beach: Sorry, what would you mean by functions could not be generic then?
<lisp123>
Got it, thanks
<beach>
Generic functions need required parameters for methods to specialize to. If you have no required parameters, generic functions are pointless, and you deprive yourself of all the conveniences of generic functions.
<lisp123>
Ah yes, that makes sense. I quickly realised part of that when PJB noted to use only mandatory &key parameters, as with just &key parameters, there's not forced mandatory parameters
<lisp123>
Thanks
<beach>
There is no such thing as "mandatory &key parameters". I think what pjb meant was "required" rather than "mandatory", and he said "mandatory AND &key...".
<lisp123>
Yes :) sorry I missed the "and"
karlosz has joined #commonlisp
<lisp123>
I realised how often I mistype :(
<rotateq>
Hey lisp123, don't worry. :)
<lisp123>
rotateq: Hey rotateq :)
<rotateq>
don't type my name three times in a row, or I'll appear next to you :D
<lisp123>
(loop for a in '(1 2 3) do (print 'rotateq))
<rotateq>
better use REPEAT :)
<rotateq>
I often get more wrong in one day than others do in a week.
<rotateq>
as Knuth has it in his hallway: "The road to wisdom? Well, it's plain and simple to express: Err and err and err again but less and less and less."
<lisp123>
Nice :)
<lisp123>
My favourite is "Programs are meant to be read by humans and only incidentally for computers to execute.", but I'm not sure if that is Donald Knuth or Abelson & Sussman in SICP. That's my motto for 2022 Lisp Programming :)
<rotateq>
so when you have such fixed size iteration, with REPEAT you don't have an unnecessary variable binding (just in the backstage of course with a gensym)
<rotateq>
that's to Don Knuth
<rotateq>
it's due to his idea of literate programming
<lisp123>
Ah
<ck_>
did you read that paper where someone critiqued the method and characterized the result as "a faberge egg of programming" (or very similar words)?
<rotateq>
no, but then (as many other times with other things) people just show they don't get it imo
<ck_>
it wasn't mean-spirited, and in that particular instance I found it quite well reasoned
unixlisp has left #commonlisp [#commonlisp]
<rotateq>
it's not always an appropriate method of course, like other paradigms
<lisp123>
Link? I read comments about it but not the actual response
<ck_>
and the actual quote is "He has fashioned a sort of industrial-strength Faberge egg [...]", on Page 481 (11), right column last paragraph before the new heading
Algernon69 has joined #commonlisp
Algernon91 has joined #commonlisp
<rotateq>
seems more to be about the WEB system itself :)
<lisp123>
Suprised Knuth didn't adopt Lisp as its the One True Language to Rule them All
<pjb>
As if recursive function equations were a difficult topic for a mathematician like Knuth…
karlosz has quit [Quit: karlosz]
<rotateq>
yes but maybe he got influenced before in other ways, or all the nights at the IBM 650
<lisp123>
pjb: Oh, that's interesting. Yeah it should be pretty straight forward one would think for a mathematician / leading computer scientist
pranavats has joined #commonlisp
<lisp123>
Perhaps the performance aspect got to some of them in the early 70s and it was too "high level"
<rotateq>
C is for me too high level. :)
<rotateq>
Maybe Stallman understands it but likes using C more as it seems.
<lisp123>
He's pretty smart
<rotateq>
Many smart people out there.
s-liao has quit [Quit: Client closed]
<rotateq>
And even more who just think they are. :)
<lisp123>
:)
s-liao has joined #commonlisp
rgherdt__ has joined #commonlisp
<beach>
rotateq: Richard Stallman decided to use Unix and C as models for GNU in order to make it widespread. He wrote something like "Unix and C are not great, but they are not too bad". Had he chosen Genera and Lisp instead, we would likely not have had much free software today.
<rotateq>
Yes and that was a good decision then.
<beach>
rotateq: If I were in his situation, I would have made the wrong choice. I admire him for doing the sub-optimal technical choice but the optimal political choice.
amb007 has quit [Ping timeout: 250 seconds]
<rotateq>
So other people have the basis to do better in the future.
amb007 has joined #commonlisp
Krystof has quit [Ping timeout: 256 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
Lord_of_Life has quit [Ping timeout: 260 seconds]
Lord_of_Life has joined #commonlisp
s-liao has quit [Quit: Client closed]
cage has joined #commonlisp
aartaka has joined #commonlisp
amb007 has quit [Ping timeout: 245 seconds]
amb007 has joined #commonlisp
rain3 has joined #commonlisp
cosimone has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
s-liao has joined #commonlisp
psycomic has joined #commonlisp
unixlisp has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
<unixlisp>
As we have two Dylan, in early "Lisp syntax Dylan", + is a method(can not add other methods), and in late "Algol syntax Dylan", + is a generic function. "why most functions defined in CL weren't defined as generic functions?", as Moon said at 88:"There does not appear to be any current practice at all, let alone a concensus ... X3J13's business, is to stabilize the Lisp of the 1980s so people can use it."
rgherdt__ has quit [Remote host closed the connection]
attila_lendvai has joined #commonlisp
rgherdt has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
nij_ has joined #commonlisp
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
amb007 has quit [Read error: Connection reset by peer]
nij_ is now known as nij-
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
nij_ has joined #commonlisp
nij_ is now known as nij-
nij_ has joined #commonlisp
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
nij_ is now known as nij-
nij_ has joined #commonlisp
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
nij_ is now known as nij-
nij_ has joined #commonlisp
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
nij_ is now known as nij-
amb007 has joined #commonlisp
nij_ has joined #commonlisp
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
<phoe>
nij-: is your client okay?
nij_ is now known as nij-
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
nij_ has joined #commonlisp
nij_ is now known as nij-
nij_ has joined #commonlisp
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
nij_ is now known as nij-
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
nij_ has joined #commonlisp
nij- has joined #commonlisp
Guest3 has joined #commonlisp
attila_lendvai has quit [Ping timeout: 245 seconds]
Algernon91 has quit [Ping timeout: 252 seconds]
alcaeus has joined #commonlisp
<rotateq>
phoe: *higgs*
alcaeus has quit [Remote host closed the connection]
Guest3 has quit [Quit: Client closed]
attila_lendvai has joined #commonlisp
akoana has quit [Quit: leaving]
random-nick has joined #commonlisp
cosimone has quit [Ping timeout: 250 seconds]
jpl01 has joined #commonlisp
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
s-liao has joined #commonlisp
<jpl01>
Can (Mc)CLIM be themed? I like the way CLIM looks but some of my users might not. Which is why I want to give them an option to switch to a different theme.
<beach>
jpl01: Try #clim for such questions.
<jpl01>
Ok, I will beach.
cosimone has joined #commonlisp
nij_ has quit [Read error: Connection reset by peer]
nij- has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
lisp123 has quit [Client Quit]
varjag has joined #commonlisp
unixlisp has left #commonlisp [#commonlisp]
tyson2 has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
attila_lendvai has quit [Ping timeout: 268 seconds]
s-liao20 has joined #commonlisp
s-liao has quit [Quit: Client closed]
taiju has quit [Ping timeout: 240 seconds]
Krystof has joined #commonlisp
attila_lendvai has joined #commonlisp
taiju has joined #commonlisp
s-liao20 has quit [Quit: Client closed]
attila_lendvai has quit [Ping timeout: 252 seconds]
waleee has joined #commonlisp
theothornhill has joined #commonlisp
kevingal has joined #commonlisp
Algernon69 has joined #commonlisp
Oladon has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
attila_lendvai has joined #commonlisp
amb007 has joined #commonlisp
jstoddard has joined #commonlisp
anticomputer has quit [Remote host closed the connection]
anticomputer has joined #commonlisp
Posterdati has quit [Ping timeout: 240 seconds]
attila_lendvai has quit [Ping timeout: 252 seconds]
ldb has joined #commonlisp
shka has joined #commonlisp
miique has joined #commonlisp
Posterdati has joined #commonlisp
jealousmonk has joined #commonlisp
aeth has quit [Ping timeout: 268 seconds]
aeth has joined #commonlisp
ldb has left #commonlisp [ERC (IRC client for Emacs 27.2)]
_73 has quit [Remote host closed the connection]
Algernon69 has quit [Ping timeout: 240 seconds]
kuao has joined #commonlisp
kevingal has quit [Ping timeout: 268 seconds]
Oladon has quit [Quit: Leaving.]
tyson2 has quit [Remote host closed the connection]
amb007 has quit [Ping timeout: 252 seconds]
MichaelRaskin has joined #commonlisp
psycomic has quit [Quit: Leaving]
Posterdati has quit [Ping timeout: 240 seconds]
treflip has joined #commonlisp
Algernon69 has joined #commonlisp
Posterdati has joined #commonlisp
Posterdati has quit [Ping timeout: 256 seconds]
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Bike has joined #commonlisp
varjag has quit [Remote host closed the connection]
nature has joined #commonlisp
varjag has joined #commonlisp
Algernon91 has joined #commonlisp
kevingal has joined #commonlisp
Algernon69 has quit [Ping timeout: 250 seconds]
Posterdati has joined #commonlisp
Jing has joined #commonlisp
Guest20 has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
tyson2 has joined #commonlisp
sjl has joined #commonlisp
sjl has quit [Client Quit]
xaltsc has joined #commonlisp
karlosz has joined #commonlisp
perrierjouet has quit [Quit: WeeChat 3.4]
karlosz has quit [Quit: karlosz]
aeth has quit [Ping timeout: 240 seconds]
Guest20 has quit [Quit: Client closed]
aeth has joined #commonlisp
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
gaqwas has joined #commonlisp
Oladon has joined #commonlisp
nij- has joined #commonlisp
cosimone has quit [Ping timeout: 260 seconds]
perrierjouet has joined #commonlisp
utis has joined #commonlisp
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
thomaslewis has joined #commonlisp
attila_lendvai has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
<utis>
say i wanted to make an alist of symbols and functions but i didn't want to type out the dot and the (lambda for every element, would it be a valid use of eval to pass elements of the form (symbol arguments-and-body) to something doing (cons symbol (eval `(lambda ,@arguments-and-body)))? hope that's not too vague. (i read somewhere that eval was evil and never needed)
<White_Flame>
what do you wish to type as your input form?
<White_Flame>
in terms of symbols/functions
<Bike>
eval is sometimes needed, but not for that. you could define a macro, maybe.
<White_Flame>
or probably just a mapcar
<phoe>
rule of thumb while doing Lisp code: you don't need eval
<phoe>
...unless you do, but that's pretty damn rare
<Bike>
(defmacro my-alist (&rest entries) `(list ,@(loop for (symbol args-and-body) in entries collect `(cons ',symbol (lambda ,@args-and-body))))
<White_Flame>
oh wait, I get it
<White_Flame>
for stuff like this, I tend to use a macrolet
<Bike>
actually make it (symbol . args-and-body)
<White_Flame>
since it probably doesn't need to be a globally-visible macro
<Bike>
then (macroexpand-1 '(my-alist (foo (x) x) (bar (y) (values y y)))) => (LIST (CONS 'FOO (LAMBDA (X) X)) (CONS 'BAR (LAMBDA (Y) (VALUES Y Y))))
<Bike>
if your problem is "i don't want to type this repeatedly", the answer is quite possibly a macro
amb007 has joined #commonlisp
perrierjouet has quit [Quit: WeeChat 3.4]
gaqwas has quit [Remote host closed the connection]
<utis>
thanks!
pranavats has left #commonlisp [Error from remote client]
<pjb>
utis: in general, if you want to use EVAL not at run-time, you can actually define a macro instead.
pranavats has joined #commonlisp
<pjb>
utis: and the answer to "i don't want to type this repeatedly" can also be a reader-macro, not always a normal macro.
gaqwas has joined #commonlisp
gaqwas has quit [Remote host closed the connection]
attila_lendvai has quit [Ping timeout: 268 seconds]
Algernon91 has quit [Ping timeout: 268 seconds]
<nij->
Can an instance of a class in CL be encoded in xml based on xml-rpc?
<White_Flame>
that depends way more on the values the instance holds, and how, than the fact that they're in an object
<random-nick>
you can also use the MOP to go over each slot and serialise it that way instead of writing methods for every class, but then you have the problem of serialising slots you don't want to have serialised
hobo has joined #commonlisp
<random-nick>
you would also have to write a method for every class of slot definition you use, but that would usually just be the standard slot definition
hobo has quit [Read error: Connection reset by peer]
hobo has joined #commonlisp
attila_lendvai has joined #commonlisp
srhm has joined #commonlisp
srhm has quit [Ping timeout: 240 seconds]
rain3 has quit [Ping timeout: 240 seconds]
nij- has quit [Quit: Using Circe, the loveliest of all IRC clients]
attila_lendvai has quit [Ping timeout: 268 seconds]
treflip has quit [Quit: good night]
aeth has quit [Ping timeout: 240 seconds]
aeth has joined #commonlisp
cosimone has joined #commonlisp
<etimmons>
I now have cl-tar able to create archives while preserving a lot of metadata and links (both hard and sym). On both Windows and non-Windows platforms! 🎉
<etimmons>
Now to clean it up a bit and open a PR for osicat...
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
Inline has quit [Quit: Leaving]
cage has quit [Quit: rcirc on GNU Emacs 27.1]
theothornhill has joined #commonlisp
Inline has joined #commonlisp
kevingal_ has joined #commonlisp
kevingal has quit [Ping timeout: 268 seconds]
Oladon has quit [Quit: Leaving.]
jeosol has quit [Quit: Connection closed]
jeosol has joined #commonlisp
<jmercouris>
can anyone think of why I shouldn't shadow cl:defpackage with uiop:defpackage?
Algernon91 has joined #commonlisp
<White_Flame>
you mean uiop:define-package?
<pjb>
jmercouris: you may want your code to use a 100% conforming defpackage macro.
<pjb>
So, relying on a specific implementation even if it comes from a library such as uiop, may restrict your portability.
joast has joined #commonlisp
<pjb>
jmercouris: otherwise, no problem. The question is rather, should you write defpackage or cl:defpackage in your source files?
<pjb>
jmercouris: or perhaps: (in-package :cl-user) (defpackage …) or (cl:in-package :cl-user) (defpackage …) ?
<pjb>
jmercouris: there are semantic differences. Sometimes, you'd want to qualify in-package and defpackage, because if you reload the file in a package that doesn't use CL, it wouldn't work.
<pjb>
jmercouris: but in the end, I think that it's better to deal with such problems manually, and use non-qualified symbols. Since this allows you to import uiop:defpackage instead of cl:defpackage.
x88x88x has quit [Remote host closed the connection]