<ixelp>
Common Lisp Study Group - A In-depth Look into CLOS (part 1) - YouTube
<beach>
s/A/An/ since it is followed by a vowel.
<beach>
mwnaylor: I meant to mention during the previous discussion that discussions about object-oriented programming vs functional programming often use a narrow definition of object-oriented programming that excludes CLOS.
<beach>
mwnaylor: Evan people like Dave Farley don't seem to know about CLOS and how it is unique.
<beach>
*Even
zxcvz has joined #commonlisp
zxcvz has quit [Client Quit]
<mwnaylor>
Looks like stumpwm is built on CLOS, thus my interest.
<beach>
Most modern Common Lisp code involves CLOS.
<mwnaylor>
That's good to know.
<mwnaylor>
Video taught me about slime inspector. *That* should be useful.
<beach>
I highly recommend Clouseau over the SLIME inspector.
<mwnaylor>
Might help if I (info "slime")
<mwnaylor>
Where would I find Clouseau? github? I don't see it in elpa/melpa.
<beach>
You should be able to get it by doing (ql:quickload "clouseau").
<beach>
It is not an Emacs thing. It is a CLIM application.
<mwnaylor>
I need to start making quickload part of my thinking process. Still rather new to Common Lisp, even though I've dabbled with it for simple examples over the years.
<beach>
mwnaylor: You may want to join #clschool if you have truly basic Common Lisp questions. People hang out there specifically to answer such questions.
<mwnaylor>
Is this a channel for more experienced developers?
<mwnaylor>
#commonlisp, I mean.
<beach>
Anybody can hang out here, but it is usually for more sophisticated questions. Though newbie questions are tolerated, especially if things are otherwise quiet.
Inline has joined #commonlisp
amb007 has quit [Ping timeout: 252 seconds]
amb007 has joined #commonlisp
<edgar-rft>
mwnaylor: Sometimes it can happen that in-depth technical discussions happen here in #commonlisp with *lots* of people involved and it's difficult for newbies to come through with basic questions what was the main reason why a separate #clschool channel was created.
<edgar-rft>
But in general all people are allowed here to ask questions here, as long as the questions have something to do with Common Lisp
yitzi has joined #commonlisp
pyooque has joined #commonlisp
puke has quit [Killed (tantalum.libera.chat (Nickname regained by services))]
pyooque is now known as puke
donleo has joined #commonlisp
pfdietz has joined #commonlisp
Perflosopher has joined #commonlisp
<mwnaylor>
edgar-rft: Like #emacs but more on topic? Over there, I get lost in the weeds w/ discussions about creating themes and messing around w/ fonts. Used to feel the same about writing major modes, until I discovered a need to create some small ones to meet my needs.
<beach>
mwnaylor: A lot of the time, some aspects about the Common Lisp are discussed, like exact interpretation of some specification. Also, discussions about the CLOS MetaObject Protocol (MOP) are common.
<beach>
mwnaylor: Major Common Lisp applications are sometimes discussed, as are differences between different Common Lisp implementation.
msv has quit [Remote host closed the connection]
edgar-rft_ has joined #commonlisp
<beach>
*some aspects about the Common Lisp standard
edgar-rft has quit [Ping timeout: 248 seconds]
<edgar-rft_>
mwnaylor: Compared to Common Lisp, Emacs Lisp is a mess of a language (what has several reasons that are too long to be discussed here), the same is true for #emacs vs #commonlisp - people here on #commonlisp whould get angry if I post the same amount of dumbshit like I often do on #emacs :-)
awlygj has quit [Quit: leaving]
<skin>
how come generic functions are so much slower? how much slower are they really? asking about sbcl, and maybe CCL or ecl.
chrcav has quit [Quit: leaving]
<skin>
why is Defstruct so much faster than def class? or is it?
<skin>
0
Inline has quit [Quit: Leaving]
X-Scale has joined #commonlisp
josrr has joined #commonlisp
chomwitt has joined #commonlisp
<skin>
more generally, what are some techniques to achieve "cheap" polymorphism in common lisp?
X-Scale95 has joined #commonlisp
shka has quit [Quit: Konversation terminated!]
X-Scale has quit [Ping timeout: 256 seconds]
shka has joined #commonlisp
<bjorkint0sh>
skin: CLOS
<skin>
isn't clos the expensive kind?
<bjorkint0sh>
i'm willing to bet Moore's law will take care of your needs.
lucasta has quit [Remote host closed the connection]
<edgar-rft_>
skin: CLOS classes and methods (based on generic functions) can be changed at runtime and therefore need more internal overhead than DEFSTRUCT. The language doesn't allow DEFSTRUCTs to be redefined. How much slower generic functions are depends on the compiler settings and what exactly you're doing. Common Lisp has a TIME macro that can be used to find it out.
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
edgar-rft_ is now known as edgar-rft
amb007 has quit [Ping timeout: 276 seconds]
amb007 has joined #commonlisp
chomwitt has quit [Ping timeout: 276 seconds]
<paulapatience>
skin: Less flexible than CLOS, but typecase
<skin>
I was thinking that, yeah
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
X-Scale95 has quit [Ping timeout: 256 seconds]
pyooque has joined #commonlisp
puke is now known as Guest9444
Guest9444 has quit [Killed (erbium.libera.chat (Nickname regained by services))]
pyooque is now known as puke
<mwnaylor>
Thanks for all the CLOS tips. Not ready to (defclass my-class …) from scratch, but I *can* start using existing instances. Currently have a slime connection to my stumpwm repl and am able to start poking around with its innards.
<mwnaylor>
It helps that I cloned the stumpwm repository in order to build it and have access to all the source code.
<beach>
skin: Also, many Common Lisp implementations use a derivative of PCL (Portable Common Loops) and old-ish implementation of CLOS based on what was the best at the time. But generic functions don't have to be intrinsically slow.
<beach>
*an old-ish
<beach>
*sigh*
<beach>
skin: It is just that maintainers of current Common Lisp implementations seem to have other fish to fry.
random-nick has quit [Ping timeout: 255 seconds]
random-nick has joined #commonlisp
smlckz- has quit [Remote host closed the connection]
pranav has quit [Remote host closed the connection]
X-Scale has joined #commonlisp
wacki has joined #commonlisp
pestctrl has joined #commonlisp
msv has joined #commonlisp
random-nick has quit [Ping timeout: 252 seconds]
X-Scale4 has joined #commonlisp
X-Scale has quit [Ping timeout: 256 seconds]
random-nick has joined #commonlisp
pranav has joined #commonlisp
yitzi has quit [Remote host closed the connection]
<skin>
well, and maybe that's just indicative of how complex the task might be (making CLOS fast) due to its design.
<bike>
making generic function dispatch fast is honestly not _that_ complicated. eql specializers are kind of weird but other than that it's just lookup tables. it's what self was doing in like the 80s plus multimethods.
<pranav>
I wonder why stuff like fast-generic-functions isn't used more often.
<ixelp>
Sealable Metaobjects for Common Lisp - YouTube
<skin>
I remember reading about this...
<bike>
"sealing" means you say that a class will never have new subclasses, a function will never have more methods, etc. So you can do away with the redefinition checks and just embed your dispatch table at the call site.