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>
scruple has quit [Quit: leaving]
theothornhill has quit [Remote host closed the connection]
igemnace has joined #commonlisp
cosimone has joined #commonlisp
varioust has joined #commonlisp
gaqwas has joined #commonlisp
notzmv has joined #commonlisp
jstoddard has joined #commonlisp
waku has joined #commonlisp
waku has left #commonlisp [#commonlisp]
monaaraj has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
monaaraj has joined #commonlisp
igemnace has quit [Remote host closed the connection]
waku has joined #commonlisp
igemnace has joined #commonlisp
tanners has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
gaqwas has quit [Ping timeout: 240 seconds]
jstoddard has quit [Quit: Leaving]
jmhnsn has joined #commonlisp
jmhnsn has left #commonlisp [WeeChat 3.3]
VincentV` has quit [Remote host closed the connection]
igemnace has quit [Remote host closed the connection]
igemnace has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
kevingal has quit [Remote host closed the connection]
monaaraj has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
<jmercouris> I have another trivial problem I am struggling with, because a macro does not evaluate its arguments
<jmercouris> I'm trying to automatically generate a class definition, but I can't just do what I've written
<jmercouris> because `(alexandria:hash-table-keys ps-format-flags)` will be literally passed into the macro
<jmercouris> not sure how I should change my approach
<moon-child> assuming ps-format-flags is lexical, I think you would need eval
<jmercouris> :'(
varioust has quit [Ping timeout: 276 seconds]
<moon-child> oh, wait, no
<jmercouris> this feels like such a stupid problem, but after staring at it for 30 minutes, I decided to reach out
<jmercouris> for your curiosity it is just: (defparameter ps-format-flags (make-hash-table))
<moon-child> oh, so it's not lexical
<jmercouris> correct
<moon-child> you could eval-when and then actually read from the macro
<moon-child> but there is a better way
<moon-child> ditch the macro
<moon-child> and instead, use
<jmercouris> how could I do this without a macro?
<moon-child> (make-instance 'standard-class :direct-slots ...)
<jmercouris> ok I see
<jmercouris> hm, does that do all of the things defclass does?
<jmercouris> because I'm looking in SBCL
<jmercouris> and it seems that defclass has many more effects
<moon-child> (setf (find-class 'name) (make-instance 'standard-class :name 'name ...))
<jmercouris> fair enough, that is probably the essentials
<jmercouris> well, it still complains
<moon-child> ah, right, apparently you need to specify :direct-superclasses () on ccl
euandreh has quit [Ping timeout: 240 seconds]
<jmercouris> no, there is more to it than that
<jmercouris> the format of direct slots is unexpected
<jmercouris> I've provided: (make-instance 'standard-class :DIRECT-SLOTS '((STAT) (SESS)) :NAME 'POTATO)
<jmercouris> but it doesn't like that
<jmercouris> complains about odd number of keyword arguments
<moon-child> :direct-slots '((:name stat) (:name sess))
<jmercouris> I see
<jmercouris> well, now it works
<jmercouris> would have never guessed it needs :name
<jmercouris> how did you know that?
<jmercouris> thats how you knew, I see
<jmercouris> I haven't yet studied the MOP yet
<jmercouris> s/yet//
azimut_ has joined #commonlisp
azimut has quit [Ping timeout: 276 seconds]
igemnace has quit [Remote host closed the connection]
<jmercouris> thanks for your help moon-child
<jmercouris> I will have to learn more about the MOP
igemnace has joined #commonlisp
waku has quit [Ping timeout: 256 seconds]
xaltsc has quit [Remote host closed the connection]
notzmv has quit [Ping timeout: 240 seconds]
igemnace has quit [Remote host closed the connection]
<Bike> jmercouris: ensure-class is the more direct function equivalent to defclass. it will take care of the (setf (find-class ...)) part for one
waleee has quit [Ping timeout: 240 seconds]
waleee has joined #commonlisp
rotateq has quit [Quit: ERC (IRC client for Emacs 27.2)]
wyrd has quit [Ping timeout: 276 seconds]
igemnace has joined #commonlisp
waku has joined #commonlisp
wyrd has joined #commonlisp
tyson2 has joined #commonlisp
waku has quit [Ping timeout: 256 seconds]
igemnace has quit [Ping timeout: 240 seconds]
wyrd has quit [Ping timeout: 276 seconds]
waku has joined #commonlisp
wyrd has joined #commonlisp
igemnace has joined #commonlisp
waku has quit [Ping timeout: 240 seconds]
IPmonger has joined #commonlisp
miique has quit [Ping timeout: 256 seconds]
IPmonger has quit [Remote host closed the connection]
IPmonger has joined #commonlisp
IPmonger has quit [Remote host closed the connection]
tanners has quit [Quit: Quit]
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
waku has joined #commonlisp
monaaraj has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
waku has quit [Ping timeout: 240 seconds]
<beach> Good morning everyone!
s-liao has joined #commonlisp
waleee has quit [Ping timeout: 256 seconds]
semz has quit [Ping timeout: 268 seconds]
perrierjouet has quit [Quit: WeeChat 3.4]
pillton has joined #commonlisp
semz has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
miique has joined #commonlisp
notzmv has joined #commonlisp
<fe[nl]ix> morning beach :)
<fe[nl]ix> is there an ASDF-based project that uses Github workflows to test on multiple implementations ?
x88x88x_ has quit [Quit: leaving]
<fe[nl]ix> I need to copy working workflow configs from someone because figuring out Github docs is not trivial
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
<etimmons> fe[nl]ix: probably worth looking at https://github.com/40ants/ci . But I can't speak to it's quality (I don't use GitHub Actions and even if I did, it looks too opinionated for my tastes)
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Quit: leaving]
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
pranavats has left #commonlisp [Error from remote client]
pranavats has joined #commonlisp
waku has joined #commonlisp
<fe[nl]ix> wow, that's rather unreadable
<fe[nl]ix> but it's a start
tyson2 has quit [Remote host closed the connection]
waku has quit [Remote host closed the connection]
waku has joined #commonlisp
Bike has quit [Quit: Connection closed]
waku has quit [Ping timeout: 256 seconds]
Alfr has quit [Remote host closed the connection]
aartaka has joined #commonlisp
antonv has joined #commonlisp
Alfr has joined #commonlisp
Alfr has quit [Remote host closed the connection]
Alfr has joined #commonlisp
Alfr has quit [Remote host closed the connection]
Jing has joined #commonlisp
waku has joined #commonlisp
<jmercouris> fe[nl]ix: take a look at Nyxt
<jmercouris> We have that
s-liao has joined #commonlisp
akoana has quit [Quit: leaving]
jealousmonk has quit [Quit: ERC (IRC client for Emacs 27.1)]
beach` has joined #commonlisp
beach has quit [Killed (NickServ (GHOST command used by beach`!~user@2a01:cb19:150:3400:a173:2cef:ba0f:9b68))]
beach` is now known as beach
karlosz has joined #commonlisp
dre has quit [Ping timeout: 240 seconds]
rotateq has joined #commonlisp
aartaka has quit [Ping timeout: 240 seconds]
Oladon has joined #commonlisp
karlosz has quit [Quit: karlosz]
_whitelogger has joined #commonlisp
monaaraj has joined #commonlisp
peterhil has quit [Remote host closed the connection]
s-liao has quit [Ping timeout: 256 seconds]
waku has joined #commonlisp
waku has quit [Ping timeout: 256 seconds]
monaaraj has quit [Ping timeout: 240 seconds]
Algernon69 has joined #commonlisp
Algernon91 has joined #commonlisp
monaaraj has joined #commonlisp
Algernon69 has quit [Ping timeout: 240 seconds]
Oladon has quit [Quit: Leaving.]
amb007 has quit [*.net *.split]
igemnace has quit [*.net *.split]
makomo has quit [*.net *.split]
x88x88x has quit [*.net *.split]
psf has quit [*.net *.split]
thomaslewis has quit [*.net *.split]
joast has quit [*.net *.split]
z3t0 has quit [*.net *.split]
_death has quit [*.net *.split]
Patternmaster has quit [*.net *.split]
Mrtn[m] has quit [*.net *.split]
frodef has quit [*.net *.split]
Mandus has quit [*.net *.split]
Posterdati has quit [*.net *.split]
Spawns has quit [*.net *.split]
scymtym has quit [*.net *.split]
hineios has quit [*.net *.split]
sterni has quit [*.net *.split]
triffid has quit [*.net *.split]
unyu has quit [*.net *.split]
wyrd has quit [*.net *.split]
azimut_ has quit [*.net *.split]
gxt has quit [*.net *.split]
anticomputer has quit [*.net *.split]
Gnuxie has quit [*.net *.split]
cgenie[m] has quit [*.net *.split]
nworb has quit [*.net *.split]
amk has quit [*.net *.split]
yitzi has quit [*.net *.split]
pieguy12- has quit [*.net *.split]
gabc has quit [*.net *.split]
dcx has quit [*.net *.split]
xantoz has quit [*.net *.split]
even4void has quit [*.net *.split]
conjunctive has quit [*.net *.split]
zups has quit [*.net *.split]
lonjil has quit [*.net *.split]
linjian has quit [*.net *.split]
edmrk[m] has quit [*.net *.split]
rudi has quit [*.net *.split]
Colleen has quit [*.net *.split]
iquites has quit [*.net *.split]
gko has quit [*.net *.split]
ullbeking_ has quit [*.net *.split]
drmeister has quit [*.net *.split]
zephyr has quit [*.net *.split]
griffinmb has quit [*.net *.split]
lisp123win has quit [*.net *.split]
aeth has quit [*.net *.split]
jgkamat has quit [*.net *.split]
paul0 has quit [*.net *.split]
frgo has quit [*.net *.split]
alvaro121 has quit [*.net *.split]
hisacro has quit [*.net *.split]
Inline has quit [*.net *.split]
okflo has quit [*.net *.split]
Noisytoot has quit [*.net *.split]
contrapunctus has quit [*.net *.split]
mister_m has quit [*.net *.split]
srji has quit [*.net *.split]
bollu has quit [*.net *.split]
Shinmera has quit [*.net *.split]
utis has quit [*.net *.split]
stack has quit [*.net *.split]
snits has quit [*.net *.split]
mfiano has quit [*.net *.split]
dstein64 has quit [*.net *.split]
mzan has quit [*.net *.split]
specbot has quit [*.net *.split]
minion has quit [*.net *.split]
markasoftware has quit [*.net *.split]
Bi[m] has quit [*.net *.split]
sp has quit [*.net *.split]
katco has quit [*.net *.split]
luis` has quit [*.net *.split]
loke[m] has quit [*.net *.split]
dieggsy has quit [*.net *.split]
shinohai[m] has quit [*.net *.split]
ultera has quit [*.net *.split]
sirufer has quit [*.net *.split]
mht-wtf has quit [*.net *.split]
resttime has quit [*.net *.split]
vegai has quit [*.net *.split]
zbrown[m] has quit [*.net *.split]
jgart has quit [*.net *.split]
saturn2 has quit [*.net *.split]
spec has quit [*.net *.split]
edgar-rft has quit [*.net *.split]
Kabriel has quit [*.net *.split]
axvr has quit [*.net *.split]
sm2n has quit [*.net *.split]
easye has quit [*.net *.split]
dbotton has quit [*.net *.split]
payphone has quit [*.net *.split]
susam has quit [*.net *.split]
borodust has quit [*.net *.split]
fe[nl]ix has quit [*.net *.split]
froggey has quit [*.net *.split]
zacts has quit [*.net *.split]
epony has quit [*.net *.split]
kakuhen has quit [*.net *.split]
Spawns_Carpet[m] has quit [*.net *.split]
Arcsech has quit [*.net *.split]
luna-is-here has quit [*.net *.split]
empwilli has quit [*.net *.split]
MetaYan has quit [*.net *.split]
antoszka-r has quit [*.net *.split]
fitzsim has quit [*.net *.split]
dale has quit [*.net *.split]
GreaseMonkey has quit [*.net *.split]
mmk2410 has quit [*.net *.split]
copec has quit [*.net *.split]
drakonis has quit [*.net *.split]
lieven has quit [*.net *.split]
hirez- has quit [*.net *.split]
bldr has quit [*.net *.split]
nckx has quit [*.net *.split]
rdrg109 has quit [*.net *.split]
sepanko has quit [*.net *.split]
opalvaults[m] has quit [*.net *.split]
Duuqnd has quit [*.net *.split]
icepic1984[m] has quit [*.net *.split]
jaimelm has quit [*.net *.split]
theBlackDragon has quit [*.net *.split]
anddam has quit [*.net *.split]
selwyn has quit [*.net *.split]
jackdaniel has quit [*.net *.split]
samebchase has quit [*.net *.split]
les has quit [*.net *.split]
iisi has quit [*.net *.split]
fiddlerwoaroof has quit [*.net *.split]
krjst has quit [*.net *.split]
Fade has quit [*.net *.split]
thonkpod has quit [*.net *.split]
Algernon91 has quit [*.net *.split]
madnificent has quit [*.net *.split]
CodeBitCookie[m] has quit [*.net *.split]
akater[m] has quit [*.net *.split]
saltrocklamp[m] has quit [*.net *.split]
MatrixTravelerbo has quit [*.net *.split]
opc0de has quit [*.net *.split]
alanz has quit [*.net *.split]
sgithens has quit [*.net *.split]
sukaeto has quit [*.net *.split]
pok has quit [*.net *.split]
gendl has quit [*.net *.split]
Schnouki has quit [*.net *.split]
IUSR has quit [*.net *.split]
skn has quit [*.net *.split]
jfb4 has quit [*.net *.split]
phoe has quit [*.net *.split]
ChanServ has quit [*.net *.split]
jeosol has quit [*.net *.split]
spiaggia has quit [Quit: ERC (IRC client for Emacs 26.3)]
alanz has joined #commonlisp
Algernon91 has joined #commonlisp
anticomputer has joined #commonlisp
igemnace has joined #commonlisp
triffid has joined #commonlisp
azimut_ has joined #commonlisp
mht-wtf has joined #commonlisp
wyrd has joined #commonlisp
amb007 has joined #commonlisp
psf has joined #commonlisp
gxt has joined #commonlisp
lisp123win has joined #commonlisp
x88x88x has joined #commonlisp
joast has joined #commonlisp
aeth has joined #commonlisp
thomaslewis has joined #commonlisp
z3t0 has joined #commonlisp
Patternmaster has joined #commonlisp
linjian has joined #commonlisp
_death has joined #commonlisp
Bi[m] has joined #commonlisp
Gnuxie has joined #commonlisp
jgkamat has joined #commonlisp
Mrtn[m] has joined #commonlisp
sp has joined #commonlisp
contrapunctus has joined #commonlisp
epony has joined #commonlisp
frgo has joined #commonlisp
paul0 has joined #commonlisp
vegai has joined #commonlisp
frodef has joined #commonlisp
jeosol has joined #commonlisp
alvaro121 has joined #commonlisp
Inline has joined #commonlisp
katco has joined #commonlisp
hisacro has joined #commonlisp
bollu has joined #commonlisp
kakuhen has joined #commonlisp
luis` has joined #commonlisp
edmrk[m] has joined #commonlisp
akater[m] has joined #commonlisp
sepanko has joined #commonlisp
CodeBitCookie[m] has joined #commonlisp
loke[m] has joined #commonlisp
Spawns_Carpet[m] has joined #commonlisp
saltrocklamp[m] has joined #commonlisp
MatrixTravelerbo has joined #commonlisp
opalvaults[m] has joined #commonlisp
cgenie[m] has joined #commonlisp
Duuqnd has joined #commonlisp
nworb has joined #commonlisp
rudi has joined #commonlisp
dieggsy has joined #commonlisp
shinohai[m] has joined #commonlisp
Arcsech has joined #commonlisp
icepic1984[m] has joined #commonlisp
zbrown[m] has joined #commonlisp
Noisytoot has joined #commonlisp
yitzi has joined #commonlisp
markasoftware has joined #commonlisp
mzan has joined #commonlisp
minion has joined #commonlisp
specbot has joined #commonlisp
snits has joined #commonlisp
dstein64 has joined #commonlisp
stack has joined #commonlisp
mfiano has joined #commonlisp
Shinmera has joined #commonlisp
srji has joined #commonlisp
utis has joined #commonlisp
zups has joined #commonlisp
mister_m has joined #commonlisp
lonjil has joined #commonlisp
even4void has joined #commonlisp
conjunctive has joined #commonlisp
xantoz has joined #commonlisp
amk has joined #commonlisp
dcx has joined #commonlisp
pieguy12- has joined #commonlisp
gabc has joined #commonlisp
griffinmb has joined #commonlisp
zephyr has joined #commonlisp
drmeister has joined #commonlisp
gko has joined #commonlisp
ullbeking_ has joined #commonlisp
iquites has joined #commonlisp
Colleen has joined #commonlisp
resttime has joined #commonlisp
sirufer has joined #commonlisp
ultera has joined #commonlisp
froggey has joined #commonlisp
borodust has joined #commonlisp
fe[nl]ix has joined #commonlisp
susam has joined #commonlisp
zacts has joined #commonlisp
payphone has joined #commonlisp
dbotton has joined #commonlisp
axvr has joined #commonlisp
sm2n has joined #commonlisp
Kabriel has joined #commonlisp
easye has joined #commonlisp
edgar-rft has joined #commonlisp
spec has joined #commonlisp
saturn2 has joined #commonlisp
jgart has joined #commonlisp
thonkpod has joined #commonlisp
krjst has joined #commonlisp
madnificent has joined #commonlisp
Fade has joined #commonlisp
les has joined #commonlisp
fiddlerwoaroof has joined #commonlisp
iisi has joined #commonlisp
jackdaniel has joined #commonlisp
selwyn has joined #commonlisp
theBlackDragon has joined #commonlisp
samebchase has joined #commonlisp
anddam has joined #commonlisp
jaimelm has joined #commonlisp
hirez- has joined #commonlisp
lieven has joined #commonlisp
copec has joined #commonlisp
drakonis has joined #commonlisp
mmk2410 has joined #commonlisp
GreaseMonkey has joined #commonlisp
dale has joined #commonlisp
antoszka-r has joined #commonlisp
fitzsim has joined #commonlisp
MetaYan has joined #commonlisp
empwilli has joined #commonlisp
luna-is-here has joined #commonlisp
rdrg109 has joined #commonlisp
nckx has joined #commonlisp
bldr has joined #commonlisp
jfb4 has joined #commonlisp
skn has joined #commonlisp
IUSR has joined #commonlisp
phoe has joined #commonlisp
pok has joined #commonlisp
Schnouki has joined #commonlisp
sgithens has joined #commonlisp
gendl has joined #commonlisp
shka has joined #commonlisp
myrrh has joined #commonlisp
okflo has joined #commonlisp
s-liao has joined #commonlisp
sukaeto has joined #commonlisp
opc0de has joined #commonlisp
sterni has joined #commonlisp
unyu has joined #commonlisp
hineios has joined #commonlisp
scymtym has joined #commonlisp
Posterdati has joined #commonlisp
Spawns has joined #commonlisp
ChanServ has joined #commonlisp
Mandus has joined #commonlisp
epony has quit [Max SendQ exceeded]
epony has joined #commonlisp
myrrh has quit [Ping timeout: 256 seconds]
myrrh has joined #commonlisp
MajorBiscuit has joined #commonlisp
gaqwas has joined #commonlisp
anticomputer_ has joined #commonlisp
anticomputer has quit [Ping timeout: 276 seconds]
<beach> mop direct-slot-definition-class
<beach> What would be a good collective name for functions like that one ^, which return a class based on the class of some other object?
azimut_ has quit [Remote host closed the connection]
azimut has joined #commonlisp
<beach> I need a term so that I can name a file in which to put some such definitions.
<pjb> beach: what kind of definitions?
<moon-child> 'class mappings', perhaps? Though that is not entirely unambiguous
<beach> pjb: What I said a few minutes ago.
<pjb> yes. Meta-slots?
pve has joined #commonlisp
<beach> Slots? That doesn't sound right.
<pjb> well, this is what you want to put in there, classes-of-slots.
<moon-child> I think 'slots' is fine, but 'meta' is not. I would assume a metaslot accessor accessed some slot of an object's metaclass
<phoe> metaclass accessors
<beach> It's a fairly common situation. In Gsharp for instance, the kind of cluster that is allowed depends on the type of the staff.
<rotateq> hm "meta" reversed is "Atem" and such also a German word which translates to "breath" :)
<beach> In this case, it is for Trucler. The kind of variable/function/etc-description depends on the CLIENT argument.
<pjb> Oh, but slot-definition-class is not the class of an individual slot, right? It's a class that will help define a set of slots for those instances?
<pjb> beach: isn't slot-definition-class like a factory class?
<pjb> so you could name the file factories.lisp
<phoe> what's the difference between a factory and a metaclass though
<phoe> standard-class is a factory of classes too if we think about it
<pjb> Any object that can create new objects is a factory.
<beach> In the case of the mop, it's the class of a class that determines the class of a slot-definition object.
<beach> But that's just for the MOP.
<rotateq> so with changing the slot-definition-class it's possible to change slot options and such?
<beach> pjb: Yes, I guess it is like a factor.
<beach> That's a good word for it.
<pjb> beach: but as a class, the slot-definition-class can determine the class of all the slot-definition objects of an instance.
<beach> Yes.
<pjb> I assume there's a method on the slot-definition-class that takes a slot-definition argument to produce the class of the slot.
<pjb> Perhaps slot-factories.
<beach> Again, in general it is not about slots. Not in Trucler, and not in Gsharp.
<rotateq> saw some example last week how to adjust behavior if a slot is touched, but didn't really get it yet
<phoe> dependent metaclasses? something like that
<beach> Ah, so it's a "factory function", i.e. a function that produces a factory.
<phoe> a factory factory? so, a metafactory?
<beach> Well, either the factory is a class or it's a function.
<beach> Which one is it?
<rotateq> phoe: when I tell people about what SETF is, then also mostly a factory for setters ^^
<loke[m]> phoe: it's not metaclasses anymore. It's facebookclasses
<phoe> beach: in the Lisp world I'd rather call a function a factory - MAKE-INSTANCE is what actually produces new stuff whereas classes are blueprints
<rotateq> noooo loke[m] not that :D
<phoe> in the Java world factories are classes but that's only because Java is so dumb that everything is forced to be a class
<beach> OK, so it's "blueprint factories".
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<phoe> rotateq: might be my code, I was working on this recently
<flip214> well, I've seen the word "blueprint" been used in javascript a lot... https://www.w3schools.com/js/js_object_constructors.asp
<flip214> I don't think that applies to CLOS
<beach> I'll just call the file factories.lisp. Thanks to everyone.
<pjb> good.
<rotateq> phoe: and they call Java good for beginners
<rotateq> flip214: and i've seen blueprint in factorio :D
gxt has quit [Remote host closed the connection]
gxt has joined #commonlisp
rain3 has joined #commonlisp
OlCe`` has quit [Ping timeout: 240 seconds]
<rotateq> and no phoe, was on another website when i searched for stuff about metaclasses
<phoe> :D
<phoe> nice
<rotateq> hm not really, no explanation :D
gaqwas has quit [Ping timeout: 256 seconds]
<rotateq> it used C2MOP:SLOT-VALUE-USING-CLASS
<phoe> standard stuff then
<rotateq> for you ;) not for me yet so far
treflip has joined #commonlisp
<rotateq> like when i would ask you what this program does ^^ https://trash.randomerror.de/r9s3j/apl_program.png but ok, not yet familiar with the ⍣ myself
waku has joined #commonlisp
random-nick has joined #commonlisp
Jing has joined #commonlisp
waku has quit [Ping timeout: 256 seconds]
s-liao has quit [Quit: Client closed]
s-liao has joined #commonlisp
OlCe``` has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
s-liao has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 256 seconds]
Lord_of_Life has joined #commonlisp
rogersm has joined #commonlisp
waku has joined #commonlisp
waku has quit [Ping timeout: 240 seconds]
aartaka has joined #commonlisp
rain3 has quit [Remote host closed the connection]
s-liao has quit [Ping timeout: 256 seconds]
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
VincentVega has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
monaaraj has quit [Read error: Connection reset by peer]
monaaraj has joined #commonlisp
nature has joined #commonlisp
iamFIREcracker has quit [Ping timeout: 240 seconds]
MajorBiscuit has quit [Ping timeout: 240 seconds]
bendersteed has quit [Ping timeout: 256 seconds]
frodef has quit [Ping timeout: 240 seconds]
frodef has joined #commonlisp
pillton has quit [Quit: ERC (IRC client for Emacs 27.2)]
waku has joined #commonlisp
waku has quit [Ping timeout: 240 seconds]
notzmv has quit [Ping timeout: 240 seconds]
igemnace has quit [Remote host closed the connection]
igemnace has joined #commonlisp
kevingal has joined #commonlisp
igemnace has quit [Remote host closed the connection]
bendersteed has joined #commonlisp
Alfr has joined #commonlisp
igemnace has joined #commonlisp
mgl has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
s-liao has joined #commonlisp
kevingal has quit [Ping timeout: 256 seconds]
igemnace has quit [Read error: Connection reset by peer]
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
tyson2 has joined #commonlisp
s-liao has quit [Quit: Ping timeout (120 seconds)]
s-liao has joined #commonlisp
euandreh has joined #commonlisp
perrierjouet has joined #commonlisp
dec0d3r has joined #commonlisp
perrierjouet has quit [Quit: WeeChat 3.4]
perrierjouet has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
MajorBiscuit has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
waku has joined #commonlisp
amb007 has joined #commonlisp
<ns12> In Hunchentoot, are session data stored on one server only?
<ns12> For example, I have server A and server B serving a web app. If server A creates a session using Hunchentoot, will server B have access to the session data?
<moon-child> ns12: I believe 'JWT' is a solution to this
waku has quit [Ping timeout: 256 seconds]
<ns12> moon-child: So, the session data is saved on the client instead of being saved on the server? Isn't there a limit to the amount of data that can be saved on the client?
<ns12> Is this solution widely-used?
<moon-child> 'limit' sure. How much data do you want to store?
<moon-child> I am not sure how you expect two servers to be able to share data with each other without any manual configuration
<ns12> I mean, cookies are limited to around 4000 bytes each.
<moon-child> what do you want to store?
<moon-child> are you looking for a database?
myrrh has quit [Remote host closed the connection]
perrierjouet has quit [Quit: WeeChat 3.4]
<ns12> Okay, I am probably expecting too much from Hunchentoot. I probably need to customize Hunchentoot's sessions to store the session data in a database (https://edicl.github.io/hunchentoot/#session-behaviour).
<flip214> A database or at least a common filesystem (like NFS) is needed
dfluk has joined #commonlisp
<moon-child> flip214: distributed consensus is a thing. Probably not the right thing in this instance, but it is nevertheless a thing
lottaquestions has joined #commonlisp
<ns12> I am spoiled by web frameworks such as Django that have database-backed sessions by default. Thanks for the help.
IPmonger has joined #commonlisp
<moon-child> I think fukamachi has some integrated web orm stuff
IPmonger has quit [Remote host closed the connection]
<flip214> moon-child: much too complex. Or do you want to do a paxos for each user login?? NFS or a database is as simple as it gets.
<moon-child> as I said: probably not the right thing in this instance
Bike has joined #commonlisp
monaaraj has quit [Remote host closed the connection]
monaaraj has joined #commonlisp
mon_aaraj has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
aphextwin has quit []
notzmv has joined #commonlisp
<ns12> In the REPL, I can use up to three asterisks (*, **, and ***) to get the previous return values. Is there a way to get return values older than *** in the SBCL REPL? **** (four asterisks) is not valid ...
<pjb> ns12: yes, there is a way.
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
<pjb> With this REPL, you can use !-254 for the 254th previous expression.
<ns12> The only solution is to use a custom REPL implementation?
<pjb> If the implementation doesn't provide hooks to implement it otherwise, yes.
xsperry has quit [Remote host closed the connection]
xsperry has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
<Bike> ns12: yeah, nothing standard.
<mfiano> ns12: SLY has back-references, the feature that allows for referring to any previous value.
<mfiano> In the REPL, a reader macro #v is available. #v0,1 means to retrieve the second return value of the first result in the REPL history.
jealousmonk has joined #commonlisp
<mfiano> This also means that they are persistent, unlike the *'s.
<mfiano> Up until you clear the REPL history that is, at which point the counters start from 0 again.
nature has quit [Ping timeout: 240 seconds]
varioust has joined #commonlisp
epolanski has joined #commonlisp
<flip214> I just store values that I might be interested via (defparameter ...); and as all forms are written down in a file somewhere (for documentation purposes), I can just go back and wrap a (defparameter) around an old form easily
* phoe is now officially a SBCL contributor
<moon-child> ;o
varioust has quit [Ping timeout: 276 seconds]
<phoe> beach: the thing we talked about, regarding a rollback at a failed U-I-F-{R,D]-C, got merged into SBCL
mon_aaraj has quit [Ping timeout: 256 seconds]
<beach> Congratulations!
<ns12> mfiano: Is there similar functionality for SLIME?
<mfiano> No
mon_aaraj has joined #commonlisp
<_death> I have some read/eval hooks for slime repl.. you can use the eval hook to store and retrieve references
<_death> *real/eval hooks patch
kevingal has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
* edgar-rft wants a REPL reader macro for accessing values evaluated before 1958
<phoe> you mean a macro for a punchcard reader?
amb007 has joined #commonlisp
<rotateq> maybe other intelligent species have this with their version of CL
varioust has joined #commonlisp
waku has joined #commonlisp
waku has quit [Ping timeout: 256 seconds]
mon_aaraj has quit [Ping timeout: 240 seconds]
thomaslewis has left #commonlisp [#commonlisp]
IPmonger has joined #commonlisp
IPmonger has quit [Remote host closed the connection]
mon_aaraj has joined #commonlisp
morganw has joined #commonlisp
Dima[m] has joined #commonlisp
varioust has quit [Ping timeout: 276 seconds]
scymtym has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
lisp123 has quit [Read error: Connection reset by peer]
scymtym has joined #commonlisp
Algernon91 has quit [Read error: Connection reset by peer]
Algernon91 has joined #commonlisp
Algernon666 has joined #commonlisp
Algernon91 has quit [Ping timeout: 240 seconds]
kevingal has quit [Ping timeout: 240 seconds]
Algernon666 has quit [Ping timeout: 240 seconds]
scymtym has quit [Remote host closed the connection]
scymtym has joined #commonlisp
varioust has joined #commonlisp
fitzsim has quit [Read error: Connection reset by peer]
varioust has quit [Ping timeout: 276 seconds]
Everything has joined #commonlisp
mon_aaraj has quit [Ping timeout: 256 seconds]
mon_aaraj has joined #commonlisp
varioust has joined #commonlisp
Algernon666 has joined #commonlisp
Algernon91 has joined #commonlisp
loke has quit [Ping timeout: 240 seconds]
Algernon666 has quit [Ping timeout: 250 seconds]
OlCe``` has quit []
jstoddard has joined #commonlisp
dec0d3r has quit [Quit: Leaving]
OlCe has joined #commonlisp
cage has joined #commonlisp
bauripalash has joined #commonlisp
waku has joined #commonlisp
Algernon666 has joined #commonlisp
bauripalash has quit [Quit: Quit]
Algernon91 has quit [Ping timeout: 240 seconds]
amb007 has quit [Read error: Connection reset by peer]
waku has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
Oladon has joined #commonlisp
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
sander has quit [Ping timeout: 240 seconds]
bendersteed has quit [Remote host closed the connection]
varioust has quit [Quit: varioust]
sander has joined #commonlisp
fitzsim has joined #commonlisp
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
thomaslewis has joined #commonlisp
makomo has joined #commonlisp
dfluk_ has joined #commonlisp
<bollu> Why does this use of let* not create a compiler error? When I write |(defgeneric errormsg (x)); (let* (x (errormsg nil)) x)| It compiles successfully and gives me the error |style-warning: The variable ERRORMSG is defined but never used.| But this is nonsensical. let* need TWO parens, not one.
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jackdaniel> bollu: LET* takes two arguments - bindings and body
<jackdaniel> each binding is either an atom (then it is implicitly initialized to nil) or a list, then the second argument is its value
<jackdaniel> so (let* (x (errormsg nil)) x) is equivalent to (let* ((x nil) (errormsg nil)) x)
dfluk has quit [Ping timeout: 240 seconds]
<jackdaniel> or to (let* ((x) (errormsg)) …) but this style is very unusual
Dima[m] has left #commonlisp [#commonlisp]
<aeth> I love macros with syntactic sugar like that. I sometimes write my own just to get that convenience where the standard doesn't provide it
<bollu> jackdaniel what does (errormsg nil) mean as a left hand side of a binding?
<bollu> jackdaniel shouldn't that give an error?
<aeth> bollu: think about how it's likely implemented
<aeth> you have a list, you walk over the list, and you apply a simple rule to the contents of the list
<jackdaniel> (errormsg nil) means that you bind a (most likely lexical) variable named errormsg to nil
<bollu> aeth I would imagine it elaborates into a lambda, with the left hand sizes becoming formal arguments to a lambda
<bollu> jackdaniel :O that is terrible. So I can dynamically generate names and pass them to let*?
<jackdaniel> em, no?
<jackdaniel> (LET* (binding1 binding2 … bindingn) …) ; (errormsg nil) is binding2 in this "template"
<bollu> oh
<aeth> (if (listp binding) (destructuring-bind (name &optional value) binding (values name value)) (values binding nil))
<bollu> (let* (x (y 1)) y) -> This translates to (let* ((x nil) (y 1)) y) I presume?
<bollu> thanks, I now understand
<aeth> my code is how you could parse the inside of a let*'s binding forms
<jackdaniel> yes, that's what I've said earlier
<bollu> yes, I misread :)
<bollu> Is it possible to disable this implicit nil-ing?
<jackdaniel> if you want some interesting things that you may find terrible you may look into progv
<jackdaniel> no, you need to define your own macro
<bollu> lol, okay, let me take a look
<bollu> jackdaniel okay, I guess I shall learn how to do that now and ask questions.
<bollu> thanks!
thomaslewis has left #commonlisp [#commonlisp]
<jackdaniel> btw, I wonder why people so rarely use PROG - it is quite handy
<jackdaniel> perhaps people don't like algol-derived operators that much
<aeth> I think most Lisp programmers use PROG (because most Lisp programmers programmed in the '80s)
<aeth> it's one of those things that I see all of the time in archaic code
<edgar-rft> yes, I programmed in the 1980s, but in TurboPascal and not in Lisp :-)
<bollu> Is it possible to get SBCL to treat warnings as errors?
<aeth> iirc, that's something ASDF can do, not the implementation
<jackdaniel> wrap your code in (handler-case (code) (warning (c) (error c))
<aeth> oh, I was assuming compiler warnings
<jackdaniel> two parens around the warning clause
<bollu> aeth okay. Any idea what the correct option is?
<bollu> aeth yeah, I wanted to treat SBCL compiler warnings as errors
<jackdaniel> asdf already does that by default I think
<aeth> asdf:*compile-file-warnings-behaviour*
<aeth> I think
<aeth> for me, it's :WARN right now
<aeth> So it's not so much that the compiler fails, it's that once the file compiles with warnings, the build system will fail
<jackdaniel> bollu: then (setf asdf:*compile-file-warnings-behaviour* :error)
<aeth> if that applies to STYLE-WARNINGs and NOTEs, then it might be really inconvenient with third party dependenices, though
<aeth> people just... ignore those
<bollu> jackdaniel thank you. Can you point me to the ASDF reference manual? I was unable to google for it
<aeth> every time I update quicklisp and then load a large project I get at least 1000 STYLE-WARNINGs
<bollu> For whatever reason, google search quality as gotten way worse for me recently....
<jackdaniel> bollu: I don't know whether this is documented
<bollu> jackdaniel Does this live in my `.asd` file?
<jackdaniel> this setf?, no this rather belongs to your lisp init file
<jackdaniel> because it applies to all systems
<jackdaniel> unless you dynamically bind the variable for the time of compilation
<aeth> or in your CI entry point if that's where you're doing it
<aeth> could be useful for automated tests
MajorBiscuit has quit [Quit: WeeChat 3.3]
<bollu> yitzi ty for the link. I'll remember to go hunt at the website for next time
miique has quit [Ping timeout: 240 seconds]
<etimmons> bollu: Note that _compile-file-warnings-behavior_ really only applies to style warnings
tyson2 has quit [Remote host closed the connection]
<etimmons> warnings that are not style warnings are treated as failures
<etimmons> The unfortunate naming comes from compile-file
<etimmons> clhs compile-file
treflip has quit [Quit: ERC (IRC client for Emacs 27.2)]
waleee has joined #commonlisp
Algernon666 has quit [Ping timeout: 240 seconds]
epolanski has quit [Quit: Connection closed for inactivity]
dfluk_ has quit [Quit: Leaving]
waku has joined #commonlisp
<bollu> etimmons how do I convert ALL types of warnings into errors?
waku has quit [Ping timeout: 256 seconds]
<Josh_2> catch a warning then signal a condition?
<White_Flame> bollu: if the problem is that QL muffles them, you can pass an option to it to let all the warnings display, I think :verbose t
reb` has joined #commonlisp
<Josh_2> I am deploying my lisp image, then as it loads the condition "Don't know how to REQUIRE sb-posix."
<White_Flame> you probably need to require it before building your image
<Josh_2> bit odd
<Josh_2> Alright let me try that
<White_Flame> since once you deploy, it's (potentionally) dislocated from wherever sbcl's install was
<White_Flame> *potentially
<Josh_2> So I should require in the build function?
<White_Flame> or toplevel or whatever init or wherever you want :-P
<White_Flame> just as long as it executes before you build your image
<Josh_2> Right
Oladon has quit [Quit: Leaving.]
<Josh_2> Okay I eval (require 'sb-posix) before the call to asdf:make but the deployed image still has the same problem
<Josh_2> Alright
<Josh_2> the problem seems to be with using clack
<Josh_2> I commented out the code that starts the hunchentoot listener (using ningle) and the problem is now gone
theothornhill has joined #commonlisp
Guest2560 has joined #commonlisp
Guest2560 has quit [Client Quit]
<White_Flame> yeah, some of those more frameworky libs do try to pull in libs lazily at runtime, and it's not good
tyson2 has joined #commonlisp
<White_Flame> it effectively makes them non-deployable
<Josh_2> hmm
<Josh_2> What is the solution? Quickloading clack?
<Josh_2> That means I can no longer just distribute a binary but the target system will also need quicklisp installed
theothornhill has quit [Remote host closed the connection]
theothornhill has joined #commonlisp
<White_Flame> correct
<etimmons> Josh_2: Clack has helper systems like "clack-handler-hunchentoot" those are the ones you need to explicitly load before dumping, IIRC
mgl has quit [Ping timeout: 256 seconds]
<Josh_2> I see
<White_Flame> it all depends on where the REQUIRE call is
<White_Flame> it might be that at build time, you actually launch & shut down your server just to flex it in the build environment
<Josh_2> Okay epic
<Josh_2> that worked etimmons tyvm
<etimmons> bollu: I'm confused about what you're actually trying to do. Do you want warnings while compiling to be treated as errors? ASDF already does this. If you want to do it not at compile time you need to wrap your code with a handler that resignals the warning as an error
<Josh_2> White_Flame: Thanks for the info, I had not considered such things
<etimmons> Josh_2: np. I've wrangled clack many times by now
<White_Flame> I'm just spitballing :)
<White_Flame> I gave up on clack pretty quickly :-P
<etimmons> yeah, that's my current boat. I'm feed up with it and just using hunchentoot directly for the most part
<White_Flame> someone else used the term "fukamachiware", and I think the label is meaningful
<Josh_2> Yes
<Josh_2> Although Woo is cool
<jackdaniel> hunchentoot is a brilliant piece of software - its api is well thought and the code is very comprehensible
<etimmons> agreed
<Josh_2> if I want to be able to use Woo with my deployed app, I assume all the target system needs is libev?
<Josh_2> Hunchentoot is great, but it is real slow :(
<jackdaniel> is it though?
<Josh_2> I like that with Ningle/Clack/Lack you can just swap between handlers
<Josh_2> Yes it is. A blazing fast webserver written in CL would be quite the draw for many people
<jackdaniel> I mean, you may of course run benchmarks and they will show that it is slower than say nginx or something, but do you have a load that makes it meaningful?
<Josh_2> Right now tbnl is much slower than nodejs
<Josh_2> https://github.com/fukamachi/woo If the benchmarks are to be believed then tbnl is also slower than a python webserver
<mfiano> fukamachiware is not very good. Too many uses of #'ignore-errors and unresponsive maintainer. I just attributed it all to him being a lone wolf that moves quickly between his own interests, without caring about users.
<Josh_2> I have run benchmarks on tbnl which come back similar on my machine
<White_Flame> how fast do you need it? what's the minimum usable throughput?
<White_Flame> who cares if one system can serve 100,000x your current load vs 10,000x
<jackdaniel> Josh_2: not my point, when you say "really slow" I'd expect that it doesn't meet some tangible need, not that it is slower than something else
<Josh_2> mfiano: doesn't he work for a japanese company using CL? I assume he uses his own libraries at work
<mfiano> Josh_2: I don't know. I have waited years for his input on several bug reports, and gave up a long time ago.
<White_Flame> also there's no comments or documentation, and he does weird things with passing around package names instead of using generics
<White_Flame> making M-.'ing through the code extremely difficult
reb` has quit [Ping timeout: 240 seconds]
<jackdaniel> you may always shave plenty of ms by replacing classes with structures, declaring speed 3, using ffi and some obscure hand-inlined code
<mfiano> Let's not forget deeply nested closures instead of standard-objects
<Josh_2> tbnl is great but it would be even greater if it could go faster than python :facepalm:
<jackdaniel> isn't the current name "hunchentoot"?
<Josh_2> yeh
<White_Flame> seems to be the case for about 16 years now :-P
<Josh_2> some of us are pretty slow to catch up :joy:
<jackdaniel> no point in using old names, unless we want to talk about LISP, and that defclass is a clever macro that is used in some of its dialects
<Josh_2> tbnl is still a valid nickname in the package, so I will keep saying tbnl ;)
<_death> so I should make the switch from araneida? ;)
<Josh_2> I dont see why we couldnt have an extremely fast web server which also has a great interface
* jackdaniel still is curious whether you have a workload that makes hunchentoot unfeasible
<mfiano> "great" is too subjective, and may conflict with "fast" to some people, especially those that think "great" coincides with generic functions all the way down.
<Shinmera> because there's only so many people and so many hours in the day
<Josh_2> Shinmera: yes pretty much
<Josh_2> Personally I have gone from Ningle -> Hunchentoot -> Ningle
<_death> it's not "slow" because of generic functions or using classes or no declarations..
<_death> it's more the "select vs. epoll" type
dre has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
reb has joined #commonlisp
Kyuvi has joined #commonlisp
kevingal has joined #commonlisp
Algernon666 has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
aartaka has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
aartaka has joined #commonlisp
thomaslewis has joined #commonlisp
Kyuvi has quit [Ping timeout: 256 seconds]
varjag has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
karlosz has joined #commonlisp
dre has quit [Ping timeout: 240 seconds]
Algernon666 has quit [Read error: Connection reset by peer]
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
rogersm has quit [Quit: Leaving...]
waku has joined #commonlisp
waku has quit [Ping timeout: 240 seconds]
dre has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
theothornhill has quit [Remote host closed the connection]
dre has quit [Ping timeout: 268 seconds]
<phoe> how can I check if a symbol names a method combination?
theothornhill has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
dre has joined #commonlisp
<_death> there's find-method-combination if you know the gf
anticomputer_ is now known as anticomputer
theothornhill has joined #commonlisp
morganw has quit [Remote host closed the connection]
<rotateq> Maybe phoe's question goes more the direction if for a symbol there even exists a method-combination that can be used with a generic-function.
theothornhill has quit [Remote host closed the connection]
<phoe> ^
<rotateq> such as (method-combination-p 'progn) => T
<mfiano> wouldn't you need to know the non-standard metaclasses for that?
<phoe> I want to know if there ever was a DEFINE-METHOD-COMBINATION done with a given symbol passed as its name, that's all
<mfiano> unlikely without looking through all gf's without some wrapper macro
<mfiano> i could be wrong though.
theothornhill has joined #commonlisp
morganw has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
<_death> doesn't look like sb-mop:find-method-combination cares about the gf though..
<phoe> hmmmm
<phoe> nice find
<_death> maybe a particular gf metaclass could store them locally or even generate them dynamically?
mon_aaraj has quit [Ping timeout: 240 seconds]
<phoe> (sb-mop:find-method-combination (sb-mop:class-prototype (find-class 'generic-function)) 'progn nil) works on this particular implementation
<phoe> but breaks on CCL
<phoe> oh well
mon_aaraj has joined #commonlisp
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
akovalenko has joined #commonlisp
theothornhill has joined #commonlisp
karlosz has quit [Quit: karlosz]
shka has quit [Ping timeout: 240 seconds]
Everything has quit [Quit: leaving]
wyrd has quit [Ping timeout: 276 seconds]
<theothornhill> When using the %slot naming for clos slots, is it generally preferred to use with-accessors or with-slots when accessing these in the code? What is the reasoning to prefer one over the other?
waku has joined #commonlisp
wyrd has joined #commonlisp
dec0d3r has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
<phoe> in what code?
<phoe> if it's internal, then follow your logic
<theothornhill> internally in your own code
<phoe> if your accessors have logic assigned to them then use them
nature has joined #commonlisp
<theothornhill> Right
<phoe> if you know that you want to invoke no accessor logic and just set some slot value then use with-slots
<phoe> or just SETF SLOT-VALUE directly
thomaslewis has joined #commonlisp
<phoe> and if it's external, then use whatever exports have been provided
<theothornhill> So that may mean that it might be smarter to use with-accessors, in case you want to extend the accessors to contain logic?
thomaslewis has left #commonlisp [#commonlisp]
<rotateq> hm maybe when scoping one object of class FOO via a WITH-FOO macro that expands into a WITH-SLOTS form, when multiple foos after each other then via WITH-ACCESSORS cause it can be well distinguished then
waku has quit [Ping timeout: 256 seconds]
mon_aaraj has joined #commonlisp
<theothornhill> because it lexically scopes them, you mean?
wyrd has quit [Ping timeout: 276 seconds]
<phoe> theothornhill: correct - but then, it's you who is supposed to know whether accessors contain logic
<rotateq> theothornhill: do you have an idea how WITH-SLOTS expands?
<phoe> so it is up to you to decide that
thomaslewis has joined #commonlisp
<theothornhill> rotateq: Yeah, but I'm sure you have something particular in mind?
<rotateq> ehm no :) just that SYMBOL-MACROLET is very useful ^^
thomaslewis has left #commonlisp [#commonlisp]
<theothornhill> Ah, I see :)
IPmonger has joined #commonlisp
IPmonger has quit [Remote host closed the connection]
<theothornhill> Is there a hypothetical performance cost to with-accessors? I'm guessing that the compilers are smart enough for it not to matter, but maybe lots for accessing can be costly?
brandflake11 has joined #commonlisp
<rotateq> yes it can be, but better think about correctness and comprehensibility first :)
rgherdt has quit [Ping timeout: 256 seconds]
<theothornhill> Yes ofc :)
<rotateq> hihi
<rotateq> and can be funny (or confusing) when giving multiple slots in a class definition the same initarg ^^
wyrd has joined #commonlisp
<Bike> in order to account for redefinition of accessor functions, practically speaking your compiler will probably not coalesce together multiple accesses
<phoe> unless they're structure accessors for which the compiler may do that, especially if you declare them inline
nature has quit [Ping timeout: 256 seconds]
<Bike> still probably not
<phoe> oh
<rotateq> hmm
<Bike> it also has to account for the possibility of some other function or thread modifying the instance
<Bike> meaning the separate reads should get separate values
<Bike> this said, slot access is probably not going to cause as much slowdown as a bad algorithm
theothornhill has quit [Remote host closed the connection]
dra has joined #commonlisp
<Bike> but like, imagine FOO is established by with-accessors, and then you have (loop while condition do (f ... foo ...)). in order for the compiler to move the read outside of the loop, it would have to know that both f and the condition can't possibly modify the instance being read
makomo has quit [Quit: WeeChat 3.3]
varjag has quit [Ping timeout: 256 seconds]
<Bike> which would require knowing that the instance is not bound to any dynamic variables, not part of a closure f could possibly access, etc
<Bike> pretty difficult
kevingal has quit [Remote host closed the connection]
phantomics has joined #commonlisp
theothornhill has joined #commonlisp
pillton has joined #commonlisp
varjag has joined #commonlisp
nij- has joined #commonlisp
wyrd has quit [Ping timeout: 276 seconds]
wyrd has joined #commonlisp
wyrd has quit [Client Quit]
random-nick has quit [Ping timeout: 256 seconds]
notzmv has quit [Ping timeout: 240 seconds]
<bollu> Here's an sly-db annoyance I have. Say I'm at sly-db debugging some stack trace, and so I focus on the 7th stack frame, hit `e` to evaluate in the stack frame. I then type an unbound variable, which takes me to a sub-handler. When I quit this subhandler with 0: [ABORT] Return to sly-db level 1, the cursor has now moved to the 1st stack frame! Can
<bollu> I make sly remember that I was in the 7th stack frame?
<phoe> bollu: ask on the sly discussions page on github, or file an issue perhaps
<phoe> the maintainer likes getting that sort of questions there
<bollu> phoe this happens with slime as well FWIW
gaqwas has joined #commonlisp
<phoe> then the fix could possibly be backported to slime too!
pve has quit [Quit: leaving]
wyrd has joined #commonlisp
thomaslewis has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
varjag has quit [Ping timeout: 240 seconds]
thomaslewis has left #commonlisp [#commonlisp]
s-liao has joined #commonlisp
igemnace has joined #commonlisp
<bollu> phoe done, filed an issue: https://github.com/joaotavora/sly/issues/488
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
dra has quit [Remote host closed the connection]
<sm2n> phoe: by accessor logic do you just mean a GF method that calls slot-value and maybe does other things? Or is this some MOP thing?
<sm2n> Because as I understand it, WITH-ACCESSORS is not well-defined for the former
<phoe> sm2n: WITH-ACCESSORS doesn't care if it is going to call a GF or something else
<sm2n> Well, yes, any sane implementation will work that way
<sm2n> but http://www.lispworks.com/documentation/HyperSpec/Body/m_w_acce.htm says "The consequences are undefined if any accessor-name is not the name of an accessor for the instance."
<sm2n> I'm not sure how else to read that
<sm2n> The notes seem to say it's fine though
<phoe> I mean, I expect this to work
<phoe> (let ((cons (cons 1 2))) (with-accessors ((cons-car car) (cons-cdr cdr)) cons (setf cons-car :foo cons-cdr :bar) cons))
<phoe> the way I read it and the way the glossary speaks, in this context an accessor is anything that is capable of performing reads and writes, like CAR or GETF
<phoe> even if it isn't a function, like SETF of GETF
<yottabyte> So are some things in lisp multithreaded by default, like let bindings? That's why they have let*, if you want the bindings evaluated sequentially?
<phoe> so, by accessor logic, I mean anything more than performs more logic than just writing some value somewhere - can be typechecks, caching, computation, anything
<phoe> yottabyte: lexical bindings are always thread-local
<phoe> s/lexical/dynamic/
waku has joined #commonlisp
<phoe> global bindings are usually global, and lexical bindings can be shared across threads via closures
<phoe> also you seem to be confusing "multithreaded" with "parallel"
<yottabyte> Well how are they evaluated in parallel if not in multiple threads?
<phoe> the former implies multiprocessing, the latter simply means that latter bindings in a binding form cannot observe the effects of the former bindings
<yottabyte> I see...
<phoe> might be slightly wrong, it's 1 AM for me
gaqwas has quit [Remote host closed the connection]
<phoe> but basically it's a two-step process
<phoe> first, you compute all the values
<phoe> second, you perform binding
<phoe> that's how LET works
<phoe> with LET* you interleave these steps: compute X → bind X → compute Y → bind Y → ...
<phoe> so effectively LET* is just a series of nested LETs, each with one binding
<yottabyte> I see
<phoe> for a true multithreaded solution, (ql:quickload :lparallel) and then (lparallel:plet ((x (sleep 1)) (y (sleep 1)) (z (sleep 1))) (list x y z))
<phoe> :D
thomaslewis has joined #commonlisp
Algernon69 has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]