jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <http://cliki.net/> <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.5.4, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
cosimone has quit [Ping timeout: 250 seconds]
cosimone has joined #lisp
buffergn0me has joined #lisp
akoana has joined #lisp
patlv has joined #lisp
secretmyth has quit [Quit: leaving]
nullniverse has quit [Remote host closed the connection]
nullniverse has joined #lisp
nullniverse has quit [Changing host]
nullniverse has joined #lisp
patlv has quit [Ping timeout: 240 seconds]
jackdaniel has joined #lisp
jackdaniel has quit [Read error: Connection reset by peer]
torbo has joined #lisp
loskutak has quit [Ping timeout: 265 seconds]
elfmacs has joined #lisp
buffergn0me has quit [Ping timeout: 250 seconds]
wiselord has quit [Ping timeout: 268 seconds]
dddddd has quit [Remote host closed the connection]
slyrus__ has quit [Remote host closed the connection]
slyrus__ has joined #lisp
amerigo has quit [Quit: Connection closed for inactivity]
davepdotorg has joined #lisp
buffergn0me has joined #lisp
davepdotorg has quit [Ping timeout: 250 seconds]
quazimodo has quit [Ping timeout: 276 seconds]
quazimodo has joined #lisp
bitmapper has quit [Ping timeout: 265 seconds]
nalik891 has joined #lisp
Lord_of_Life_ has joined #lisp
nullniverse has quit [Read error: Connection reset by peer]
Lord_of_Life has quit [Ping timeout: 268 seconds]
Lord_of_Life_ is now known as Lord_of_Life
jason_m has joined #lisp
Lycurgus has quit [Quit: https://meansofproduction.biz Exit Quassel.]
<jason_m> Is there a way to see the expanded result of a symbol-macrolet form? For example, if I evaluate: (macroexpand '(with-slots (x y z) (obj) (setf z (+ x y)))), I see a symbol-macrolet form in the output (using sbcl). Is there a way to further expand the result? I am interested because I want to write some macros of my own that make use of symbol-macrolet.
<pjb> jason_m: macroexpand doesn't work recursively.
<pjb> You can use slime-macroexpand-all
<pjb> or do it manually.
<jason_m> pjb: I thought that was the difference between macroexpand and macroexpand-1?
<pjb> Nope. Both only work on the toplevel operator.
<pjb> -1 once, macroexpand until it cannot expand.
<pjb> Then you need to code walk. If the result of macroexpand is a special-operator, apply the rules. If it's a function, applies on the arguments recursively.
slyrus_ has joined #lisp
<pjb> Anyways, symbol-macrolet is a special operator, so it probably won't macroexpand.
<pjb> (it could be implemented as a macro, but probably not).
<jason_m> pjb: Yeah, I tried plugging the symbol-macrolet form directly into macroexpand, and it did not further expand so you are probably right about the implementation.
slyrus__ has quit [Ping timeout: 240 seconds]
pmai has quit [Read error: No route to host]
<jason_m> I better understand the difference between macroexpand and macroexpand-1 now. I was misinterpreting "repeatedly" to mean "recursively".
lucasb has quit [Quit: Connection closed for inactivity]
<pjb> jason_m: I like to implement those operators myself to understand them. It's not hard in general. Remember, lisp was invented on a 32KW computer system…
<edgar-rft> ... and 32 kiloWatt is a lot of power :-)
<pjb> Kilo Words.
<pjb> kilo watt is kW, not KW.
malm has quit [Ping timeout: 240 seconds]
zotan has quit [Ping timeout: 240 seconds]
Bourne has quit [Ping timeout: 240 seconds]
malm has joined #lisp
gigetoo has quit [Ping timeout: 240 seconds]
jdz has quit [Ping timeout: 240 seconds]
ym has quit [Ping timeout: 240 seconds]
xantoz has quit [Ping timeout: 240 seconds]
Tordek has quit [Ping timeout: 240 seconds]
davsebamse has quit [Ping timeout: 240 seconds]
ineiros has quit [Ping timeout: 240 seconds]
gigetoo has joined #lisp
zotan has joined #lisp
jdz has joined #lisp
davsebamse has joined #lisp
ineiros has joined #lisp
ym has joined #lisp
Tordek has joined #lisp
<edgar-rft> pjb: k = kilo, K = Kelvin, KW are KelvinWords!
<pjb> edgar-rft: units cannot be used as prefix, so there's no ambiguity.
<edgar-rft> William Thomson Kelvin was a human speaking words.
shifty has joined #lisp
elfmacs has quit [Ping timeout: 276 seconds]
ebrasca has quit [Remote host closed the connection]
elfmacs has joined #lisp
ebzzry has quit [Read error: Connection reset by peer]
slyrus__ has joined #lisp
enrio has joined #lisp
<oni-on-ion> PoundCake
slyrus_ has quit [Ping timeout: 276 seconds]
megalography has left #lisp [#lisp]
useful_illusion has joined #lisp
<moon-child> oni-on-ion: is that an order?
jackdaniel has joined #lisp
Blukunfando has quit []
<oni-on-ion> =P
jackdaniel has quit [Read error: Connection reset by peer]
<oni-on-ion> KiloByte. being silly at pjb
cosimone has quit [Quit: Quit.]
Necktwi has quit [Ping timeout: 276 seconds]
<useful_illusion> h=Hello all :)
<equwal> Good morning beach!
<useful_illusion> Good morning (assume u r in UK/Europe.. or,,)
Bike has quit [Quit: Lost terminal]
<equwal> No, I just always use Good morning to avoid confusion.
jason_m has quit [Ping timeout: 265 seconds]
malfort has joined #lisp
<useful_illusion> Ahh, probably a good idea! Thanks.
blt has joined #lisp
libertyprime has joined #lisp
akoana has left #lisp ["Leaving"]
davepdotorg has joined #lisp
rotucer has quit [Ping timeout: 265 seconds]
rotucer has joined #lisp
davepdotorg has quit [Ping timeout: 268 seconds]
clothespin has joined #lisp
oni-on-ion has quit [Ping timeout: 245 seconds]
oni_on_ion has joined #lisp
clothespin has quit [Ping timeout: 250 seconds]
torbo has quit [Remote host closed the connection]
clothespin has joined #lisp
adolby has quit [Remote host closed the connection]
adolby has joined #lisp
rotucer has quit [Read error: Connection reset by peer]
rotucer has joined #lisp
adolby has quit [Remote host closed the connection]
adolby has joined #lisp
useful_illusion has quit [Remote host closed the connection]
davepdotorg has joined #lisp
shifty has quit [Read error: Connection reset by peer]
shifty has joined #lisp
davepdotorg has quit [Ping timeout: 252 seconds]
enrioog has joined #lisp
ArthurStrong has quit [Quit: leaving]
enrio has quit [Ping timeout: 265 seconds]
enrioog is now known as enrio
brown121408 has quit [Ping timeout: 246 seconds]
brown121407 has joined #lisp
oni_on_ion is now known as oni-on-ion
jfb4 has joined #lisp
jfb4_ has quit [Ping timeout: 268 seconds]
sjl has quit [Ping timeout: 240 seconds]
sjl has joined #lisp
jackdaniel has joined #lisp
keep_learning has joined #lisp
jackdaniel has quit [Read error: Connection reset by peer]
keep_learning has quit [Client Quit]
jackdaniel has joined #lisp
sauvin has quit [Ping timeout: 250 seconds]
jackdaniel has quit [Read error: Connection reset by peer]
varjag has joined #lisp
keep_learning has joined #lisp
keep_learning has quit [Client Quit]
Necktwi has joined #lisp
zooey_ has joined #lisp
zooey has quit [Ping timeout: 260 seconds]
sauvin has joined #lisp
varjag has quit [Ping timeout: 250 seconds]
lottaquestions_ has quit [Ping timeout: 246 seconds]
lottaquestions has quit [Ping timeout: 260 seconds]
Kaisyu7 has joined #lisp
enrio has quit [Ping timeout: 268 seconds]
shka_ has joined #lisp
amerlyq has quit [Quit: amerlyq]
JohnMS_WORK has joined #lisp
aeth has quit [Ping timeout: 240 seconds]
aeth has joined #lisp
flamebeard has joined #lisp
<beach> Good morning everyone!
dddddd has joined #lisp
buffergn0me has quit [Ping timeout: 250 seconds]
<edgar-rft> Mom said "follow your dreams" so I went back to bed.
jfb4_ has joined #lisp
shka_ has quit [Ping timeout: 246 seconds]
gxt has quit [Ping timeout: 260 seconds]
jfb4 has quit [Ping timeout: 276 seconds]
scymtym has quit [Ping timeout: 245 seconds]
rgherdt has joined #lisp
libertyprime has quit [Ping timeout: 268 seconds]
rgherdt has quit [Remote host closed the connection]
snapekang has joined #lisp
CrazyEddy has joined #lisp
dale has quit [Quit: My computer has gone to sleep]
karlosz has joined #lisp
edgar-rft has quit [Quit: Leaving]
jprajzne has joined #lisp
libertyprime has joined #lisp
varjag has joined #lisp
libertyprime has quit [Ping timeout: 268 seconds]
malfort has quit [Ping timeout: 240 seconds]
elfmacs has quit [Ping timeout: 250 seconds]
elfmacs has joined #lisp
<boeg> Is there a way to tell sbcl' repl to use a specific package as it's main "namespace". Like say I have a package at some.package with a function hello which I can call with `some.package::hello`, is it possible to say "right now i'm always at some.package" so I can just call the function with `hello` ?
<Xach> boeg: (in-paaakge <the package name>)
<Xach> err, package, not paaakge
igemnace has joined #lisp
<boeg> Xach: Didn't realize I could do that in the REPL. Thanks!
scymtym has joined #lisp
<boeg> oh, is it possible to reset it other than restart sbcl?
<Xach> boeg: "reset" in what sense?
<Xach> you can do (in-package :cl-user) to change back to the default package.
<Xach> the default initial package for sbcl, that is
<boeg> like, go back to whatever is sbcl starting "in-package state" which I don't know what is
<boeg> ah, yes
<boeg> exactly what I meant, of course
<boeg> thank you
<Xach> boeg: in slime, there is a shortcut with completion: ,change-package
<Xach> or ,c-p SPACE
<boeg> Xach: thanks! I'm using sly actually because I read somewhere it was "better", but I'm getting the feeling from this channel that most are using slime, and for example in this case, it's called ,set-package instead of ,change-package as far as I can see, so its not the first time I experience that, well, would be easier to get help if I were using slime :)
<boeg> Maybe I should just revert to slime
<Xach> boeg: i think sly may be better but i found it hard to switch
Necktwi has quit [Ping timeout: 250 seconds]
<boeg> Right, I just started with sly when I started with common lisp so I didn't have to switch
<boeg> arguably not long ago, so its limited what I would have to learn/unlearn either way
gxt has joined #lisp
Kevslinger has quit [Quit: Connection closed for inactivity]
Necktwi has joined #lisp
ralt has joined #lisp
<Xach> i worry about a slime local maximum
<ck_> Xach: maximum with respect to what?
<ck_> usability in general?
libertyprime has joined #lisp
loskutak has joined #lisp
anewuser has joined #lisp
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
femi has quit [Ping timeout: 252 seconds]
jackdaniel has joined #lisp
Cymew has joined #lisp
jackdaniel has quit [Read error: Connection reset by peer]
libertyprime has quit [Quit: leaving]
libertyprime has joined #lisp
jackdaniel has joined #lisp
ebzzry has joined #lisp
femi has joined #lisp
Lycurgus has joined #lisp
hhdave has joined #lisp
jackdaniel has quit [Read error: Connection reset by peer]
jackdaniel has joined #lisp
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #lisp
<Xach> ck_: yes, vs sly
jackdaniel has quit [Read error: Connection reset by peer]
jackdaniel has joined #lisp
jackdaniel has quit [Read error: Connection reset by peer]
jackdaniel has joined #lisp
Lycurgus has quit [Quit: https://meansofproduction.biz Exit Quassel.]
<phoe> Xach: also ,in-package
<phoe> I use that as ,ipa<RET>
wiselord has joined #lisp
<Xach> cool
<Xach> did not know about it
<jdz> I just do ,in<RET>.
<jackdaniel> were there attempts to implement The Nimble Type Inferencer in CL implementations? i.e is there some followup material except the paper by HBaker?
grabarz has joined #lisp
<jackdaniel> I've only found a brief ramrk in https://www.pvk.ca/Blog/2013/04/13/starting-to-hack-on-sbcl/ that "a scheme (...) doesn't quite work for Common Lisp (it's very hard to propagate information backward while respecting the final standard)."
<jonatack> jdz: ",in<RET>" nice, TIL
<beach> jackdaniel: Yes, I don't think the technique works for standard Common Lisp.
nowhereman has quit [Ping timeout: 276 seconds]
<jackdaniel> beach: thanks. I thought so basked on the the I've quoted. I'm curious of "why", so I've asked if there is a followup material which explains that. Is there some state of the art technique for CL, or it is "whatever CMUCL/SBCL does"?
<jackdaniel> based*
xantoz has joined #lisp
<beach> Let me see if I can come up with an example...
loskutak has quit [Ping timeout: 240 seconds]
JohnMS_WORK has quit [Read error: Connection reset by peer]
<nirved> Xach: I used to do ,+p and when finished ,-p
JohnMS_WORK has joined #lisp
<ck_> C-c M-p is another way to switch packages -- slime-repl-set-package
<beach> jackdaniel: How about this: (progn (+ x 1) (f x) (assert (typep x 'fixnum)))
<Xach> nirved: didn't know about that either
ljavorsk has joined #lisp
<nirved> now just typing (in-package ...) is fast enough, and feels smoother
<jackdaniel> beach: do you mean that it is not feasible, because it lifts declarations and type checks at the beginning, hence (f x) may never get executed because type is violated, while in comforming program error would be signalled only after (f x) is invoked?
<beach> Yes, something like that.
<jackdaniel> alright, thank you
<jackdaniel> and regarding the second part of the question: is there a state of the art technique which may be used for common lisp?
<beach> jackdaniel: I don't know. But in Cleavir the plan is to do type inference in HIR using the ordinary control flow.
<jackdaniel> understood, thanks again
gxt_ has joined #lisp
gxt has quit [Ping timeout: 260 seconds]
<Xach> jackdaniel: shoutout from stylewarning in his talk at sbcl20 - "[jackdaniel] does a wonderful job"
<ck_> hear, hear :)
anewuser has quit [Ping timeout: 240 seconds]
<jackdaniel> wow, thanks :)
jonatack has quit [Ping timeout: 252 seconds]
loskutak has joined #lisp
pilne has quit [Quit: If you think nobody cares, try missing a few payments]
rotty has quit [Quit: WeeChat 2.7-rc1]
edgar-rft has joined #lisp
Guest75462 has quit [Read error: Connection reset by peer]
Guest75462 has joined #lisp
vlatkoB has joined #lisp
_paul0 has quit [Ping timeout: 276 seconds]
jonatack has joined #lisp
jackdaniel has quit [Quit: jackdaniel]
jonatack has quit [Ping timeout: 240 seconds]
jonatack has joined #lisp
brown121407 has quit [Read error: Connection reset by peer]
brown121407 has joined #lisp
igemnace has quit [Quit: WeeChat 2.6]
ym has quit [Ping timeout: 250 seconds]
ggole has joined #lisp
akotlarski has joined #lisp
grabarz has quit [Read error: Connection reset by peer]
ym has joined #lisp
grabarz has joined #lisp
HDurer has quit [Remote host closed the connection]
<flip214> question about mcclim: when using clouseau, heisig sees a small arrow (eg. for integers) and can open a menue with it (to increment numbers, for example).
thijso has quit [Ping timeout: 265 seconds]
<flip214> I'm using QL mcclim 20191130, which also has these commands - but I don't see the arrow!
HDurer has joined #lisp
<flip214> heisig suspects a window manager issue; I'm running lxqt with lightdm, I wouldn't expect that to be inferior!?!
<flip214> Is there some configuration item that's wrong, is it a WM problem, ...?
<scymtym> flip214: can you explain the "small arrow" part more? things that offer a context menu ("presentations" in CLIM terminology) should be highlighted with a thin black border (clouseau does additional highlighting for circularity indication, but that should be inconsequential here). right-clicking such a highlighted thing should open the context menu
<scymtym> does the context menu maybe open on a different screen or at an odd position? clx/mcclim sometimes get that part wrong
smokeink has quit [Ping timeout: 250 seconds]
karlosz has quit [Quit: karlosz]
cosimone has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 268 seconds]
stepnem_ has quit [Ping timeout: 250 seconds]
lucasb has joined #lisp
shifty has quit [Ping timeout: 268 seconds]
<flip214> scymtym: I get a menu via right-click - but it only contains "Toggle inspect N", and not all the other goodies
<flip214> and as for circularity detection: (clouseau:inspector `(1 #1=(2 3) #2=(#1# #2# #1#) 4))
<flip214> gives me a "control stack exhausted" ;(
karlosz has joined #lisp
karlosz has quit [Quit: karlosz]
brown121407 has quit [Ping timeout: 268 seconds]
brown121407 has joined #lisp
stepnem has joined #lisp
<phoe> flip214: evaluating `(1 #1=(2 3) #2=(#1# #2# #1#) 4) in SBCL blows the stack as well
<phoe> same for a simpler case of `#1=(#1#)
<phoe> looks like the SBCL quasiquote does not enjoy circularities
<phoe> you likely want '(1 #1=(2 3) #2=(#1# #2# #1#) 4) instead
<phoe> because with the backquote your query isn't even reaching clouseau:inspector
karlosz has joined #lisp
karlosz has quit [Remote host closed the connection]
efm_ has joined #lisp
efm has quit [Ping timeout: 276 seconds]
jackdaniel has joined #lisp
<flip214> phoe: yeah, thanks..
<flip214> clouseau doesn't see the duplicated use in (clouseau:inspector `(1 #1=(2 3) #1#))
<flip214> either
<flip214> but when I click on the integer 2, both of the two visible ones are opened and closed at the same time, so some identity is preserved
<phoe> flip214: flip214:
<phoe> (let ((x `(1 #1=(2 3) #1#))) (eq (second x) (third x))) ;=> NIL
<phoe> this isn't a clouseau issue
<phoe> this is on SBCL
<phoe> you operate under the assumption that backquote preserves ## and #= identity, and it seems that it isn't true
<flip214> but the identical CONS cells are not synchronized?!
v88m has quit [Ping timeout: 246 seconds]
<jackdaniel> sbcl's backquote is somewhat magical, you can't expect it to behave like an operator
<flip214> phoe: yeah, when I replace ` by ' behavious is (very) slightly different
<flip214> but still the integers are synchronized
slyrus_ has joined #lisp
<jackdaniel> cons are allocated on a heap, fixnums may be immediate objects
<flip214> the basic question is "why does heisig see more options in his menu than me?"
<jackdaniel> different sbcl version?
<flip214> jackdaniel: yeah, right. even more reason to _not_ have them synchronized
<jackdaniel> I remember it was qutie easy to hit infinite recursion when you were using backquote and #1= on sbcl
<jackdaniel> after some investigation I've came to resolution, that it is conforming however surprising
EvW has joined #lisp
slyrus__ has quit [Ping timeout: 276 seconds]
<phoe> in particular, `(#1=(1 2) #1#) can be interpreted the same way that `((1 2) (1 2)) is
<phoe> which means, (append (list (list 1 2)) (list (list 1 2)))
<phoe> which means that no identity has a chance to be preserved
bitmapper has joined #lisp
<phoe> which in turn implies that ## and #= do not work inside backquotes
<flip214> is it just me, or are the names on https://www.cliki.net/CPS really badly broken not-any-longer UTF-8?
<phoe> flip214: confirmed, broken for me too
<flip214> phoe: thanks
omarish has joined #lisp
brown121407 has quit [Read error: Connection reset by peer]
brown121407 has joined #lisp
_Posterdati_ has joined #lisp
Posterdati has quit [Ping timeout: 265 seconds]
<scymtym> flip214: the circularity example doesn't get to clouseau, it fails in the quasiquote expander
<scymtym> flip214: is it possible that you are using an old version of clouseau? the entry-point should be CLOUSEAU:INSPECT (not CLOUSEAU:INSPECTOR). that would also explain the highlighting differences and the missing context menu
karlosz has joined #lisp
<Xach> pfdietz: you suggested something a while ago that i have not been able to fully understand (and also I can't find the suggestion)
jmercouris has joined #lisp
<Xach> pfdietz: it relates to the problem of suppressing output for quicklisp-provided systems and showing all output for other systems
<jmercouris> I just wanted to point out in the topic that there is a much newer relese of SBCL available, what's the reasoning behind having the version numbers and implementations in the topic anyway?
<Xach> jmercouris: it is a relic of an older time when more people got their news through IRC
<Xach> I think it would be fine to leave them out
<jmercouris> well, perhaps time to update it then!
<jmercouris> :-)
Xach changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/>
karlosz has quit [Quit: karlosz]
Lord_of_Life_ has joined #lisp
karlosz has joined #lisp
Lord_of_Life has quit [Ping timeout: 268 seconds]
<pfdietz> Xach: I'm trying to remember if I said anything related to that.
Lord_of_Life_ is now known as Lord_of_Life
<Xach> pfdietz: you said something about pushing with-quiet-compilation farther into the plan rather than leaving it at the top
<Xach> pfdietz: (if i remember correctly)
<pfdietz> Hmm. This may have been in relation to getting warnings printed, even if most else noise was suppressed?
<Xach> pfdietz: yes
<pfdietz> Ok.
<pfdietz> I remember the problem, at least. :)
<Xach> pfdietz: but i have had problems handling recursive calls
<Xach> that is, a warning-not-suppressed system may depend on a warning-suppressed system and asdf makes a recursive call out of my control
<Xach> or vice versa
brown121407 has quit [Ping timeout: 245 seconds]
brown121407 has joined #lisp
<jackdaniel> Xach: albeit ugly maybe you could write around methods for perform specialized on compile-op in asdf?
<Xach> jackdaniel: is there a chance of conflict though? or do i make a subclass operation?
<Xach> like my-compile-op or something?
<jackdaniel> there is a chance of conflict
<pfdietz> Perhaps there could be some approach that wraps warnings so they aren't suppressed, and maybe not use the stnadard muffle-warning function.
<jackdaniel> and subclassing operation won't work, because dependencies will be loaded with i.e comile-op
<jackdaniel> so you are back to square one then
<Xach> pfdietz: warnings are a special case of suppression. i'd also like to show output with one, and not show for the other.
<Xach> so solving warnings is good but not the whole picture
<pfdietz> For output, bind the stream(s) to which the output will go and wrap that up too?
<Xach> pfdietz: how to turn it on or off in the midst of recursive loading?
elfmacs has quit [Ping timeout: 252 seconds]
Bike has joined #lisp
<pfdietz> Toy example: suppose we have an output stream *s*. with-quiet-s would bind *s* to a nullary broadcast stream (say).
<Xach> oukkei
<pfdietz> But it could also bind *unsuppressed-s* to the previous value of *s*.
<Xach> "it" could do that when?
<pfdietz> with-noisy-s would then bind *s* to *unsuppressed-s*.
<pfdietz> In the expanded macro form.
<pfdietz> (with-quiet-s . body) ==> (let ((*s* (make-broadcast-stream))) . body)
<Xach> that is not the level i mean. i mean asdf is executing a plan and i don't see points of intercession to change behavior.
<pfdietz> Or, rather, (let* ((*unsuppressed-s* *s*) (*s (make-broadcast-stream))) . body)
<pfdietz> Ok
<pfdietz> Well, I'm not familiar with asdf plumping. Presumably this would go in an around method somewhere?
<Xach> the leaves of the plan need different behavior depending on some property of the system to load
<Xach> pfdietz: possibly, though i do not see a way forward with that idea
<phoe> I just got a most crazy idea
<Xach> i hope it solves all my problems and is nice and beautiful
<phoe> replace *standard-output* with a Gray stream that, on each print, inspects the stack to figure out which system is currently being loaded - if it's not a system belonging to a list, then print nothing, otherwise, print the character to the wrapped *standard-output*
<phoe> if anyone actually implements this, they should be shot
<jackdaniel> systems may be loaded from local directories superseeding quicklisp ones
<Xach> well, it may be crazy, but it is also ugly and not nice and does not solve my problem
<Xach> aside from that it is fantastic!!
* phoe sigh
<jackdaniel> I have an idea, let me investigate for a minute
* phoe goes back to performing dayjob things
<phoe> jackdaniel: good luck
<Xach> phoe: thank you anyway :)
<pfdietz> It fills a much-needed gap in solution space!
<jackdaniel> it will involve using internal asdf interface though (not exported)
<Xach> jackdaniel: i do that now (lightly)
<Xach> i might do it if it is not too deep
<jackdaniel> Xach: specialize call-with-around-compile-hook (around method), which takes a) component, b) thunk; based on component pathname you may judge whether it is in ql directory or not and bind the appropriate dynamic variable
<jackdaniel> you may control it per system, but also per module or even a file
<jackdaniel> (and of course invoke call-next-method)
<Xach> jackdaniel: hmm, and the idea is that because it is not external in asdf it is ok to add an :around?
<jackdaniel> asdf does not add around, so there will be no conflict, unless someone is as rude as you and defines around themself! ;)
<jackdaniel> (for internal interface)
jonatack has quit [Ping timeout: 268 seconds]
<jackdaniel> or if asdf changes this interface without notification
<jackdaniel> not something unseen of
<Xach> right
kritixilithos has joined #lisp
<jackdaniel> imo hooks should be implemented by means of registering and removing hooks
<jackdaniel> so they are not limited with: one hook per class
<jackdaniel> but whatever
<Xach> so here is an idea i had that does not work
<Xach> in my system search function, i can return a system object rather than a pathname
<Xach> but i don't know how to make a system object with enough detail to replicate what should happen to the original system (which itself might be a system subclass, i think)
<Xach> i don't think i could simply change-class without danger
<jackdaniel> use a stealth mixin and you are golden
<Xach> jackdaniel: how?
<jackdaniel> (stealth-mixin:define-stealth-mixin my-class () asdf:system ()) ; and now you can add around method for your own class
<jackdaniel> which will check where the system is located
<jackdaniel> (your idea made me think of it)
<jackdaniel> stealth-mixins are basically adding your class as a superclass for asdf:system in this example
<Xach> that looks nice in the library but i cannot rely on any external code :(
<Xach> no closer-mop etc
<Xach> maybe that's not so bad
<jackdaniel> another idea (not very efficient one though), you could define perform around method specialized on compile-op and (eql your-ql-system)
ax-hack has joined #lisp
wiselord has quit [Read error: Connection reset by peer]
karlosz has quit [Quit: karlosz]
dyelar has joined #lisp
<Xach>
<Xach> pfdietz: some more context and simplification on twitter
osune has quit [Remote host closed the connection]
EvW2 has joined #lisp
EvW has quit [Ping timeout: 250 seconds]
EvW2 is now known as EvW
ebrasca has joined #lisp
dyelar has quit [Quit: Leaving.]
karlosz has joined #lisp
karlosz has quit [Client Quit]
shifty has joined #lisp
slyrus__ has joined #lisp
slyrus_ has quit [Ping timeout: 240 seconds]
random-nick has joined #lisp
EvW has quit [Ping timeout: 265 seconds]
<flip214> scymtym: yeah, in the meantime I found that an old git checkout interfered... but still I don't have the same output as heisig
<flip214> oh, I need to click on the CONS to be able to increment CAR!?!?!
efm_ has quit [Quit: Konversation terminated!]
slyrus has joined #lisp
rotucer has quit [Ping timeout: 240 seconds]
dyelar has joined #lisp
slyrus__ has quit [Ping timeout: 276 seconds]
bitmapper has quit [Remote host closed the connection]
bitmapper has joined #lisp
amerlyq has joined #lisp
jprajzne has quit [Quit: Leaving.]
ljavorsk has quit [Ping timeout: 276 seconds]
bitmapper has quit [Ping timeout: 240 seconds]
flamebeard has quit []
rotucer has joined #lisp
brown121407 has quit [Read error: Connection reset by peer]
brown121407 has joined #lisp
bitmapper has joined #lisp
JohnMS_WORK has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
loke` is now known as loke
thijso has joined #lisp
Inline has joined #lisp
ljavorsk has joined #lisp
cpt_nemo has quit [Ping timeout: 252 seconds]
efm has joined #lisp
smazga has joined #lisp
cpt_nemo has joined #lisp
bitmapper has quit [Remote host closed the connection]
jmercouris has quit [Ping timeout: 250 seconds]
cpt_nemo has quit [Ping timeout: 245 seconds]
cpt_nemo has joined #lisp
kajo has joined #lisp
jackdaniel has quit [Quit: jackdaniel]
jmercouris has joined #lisp
clothespin has quit [Ping timeout: 276 seconds]
jonatack has joined #lisp
gareppa has joined #lisp
jmercouris has quit [Remote host closed the connection]
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
<scymtym> flip214: yes, since numbers are immutable, you can only modify the "place" containing the number
brown121407 has quit [Ping timeout: 265 seconds]
edgar-rft has quit [Quit: Leaving]
dyelar has quit [Quit: Leaving.]
shka_ has joined #lisp
gareppa has quit [Quit: Leaving]
dyelar has joined #lisp
ax-hack has quit [Read error: Connection reset by peer]
gxt_ has quit [Ping timeout: 260 seconds]
ax-hack has joined #lisp
clothespin has joined #lisp
Necktwi has quit [Quit: leaving]
Necktwi has joined #lisp
nopolitica has joined #lisp
kajo has quit [Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.]
rotucer has quit [Ping timeout: 240 seconds]
rotucer has joined #lisp
cosimone has quit [Quit: Terminated!]
dyelar has quit [Quit: Leaving.]
jackdaniel has joined #lisp
notzmv has quit [Ping timeout: 240 seconds]
brown121407 has joined #lisp
dyelar has joined #lisp
varjagg has joined #lisp
rgherdt has joined #lisp
dyelar has quit [Client Quit]
hhdave has quit [Quit: hhdave]
nopoliti1 has joined #lisp
varjagg is now known as varjag
nopolitica has quit [Ping timeout: 268 seconds]
nopoliti1 has quit [Client Quit]
nopolitica has joined #lisp
femi has quit [Ping timeout: 240 seconds]
smokeink has joined #lisp
dale_ has joined #lisp
efm has quit [Read error: Connection reset by peer]
dale_ is now known as dale
rippa has joined #lisp
ravndal has joined #lisp
femi has joined #lisp
efm has joined #lisp
Lycurgus has joined #lisp
ljavorsk has quit [Remote host closed the connection]
bitmapper has joined #lisp
dyelar has joined #lisp
akotlarski has quit [Remote host closed the connection]
ljavorsk has joined #lisp
loskutak has quit [Ping timeout: 250 seconds]
davepdotorg has quit [Remote host closed the connection]
ggole has quit [Quit: Leaving]
ljavorsk has quit [Ping timeout: 240 seconds]
Kevslinger has joined #lisp
gareppa has joined #lisp
useful_illusion has joined #lisp
EvW has joined #lisp
oni-on-ion has quit [Ping timeout: 250 seconds]
Lycurgus has quit [Quit: https://meansofproduction.biz Exit Quassel.]
ljavorsk has joined #lisp
kritixilithos has quit [Quit: quit]
slyrus_ has joined #lisp
slyrus has quit [Ping timeout: 252 seconds]
zmv` has joined #lisp
EvW has quit [Ping timeout: 250 seconds]
zmv has quit [Read error: Connection reset by peer]
Cymew has quit [Ping timeout: 268 seconds]
gareppa has quit [Quit: Leaving]
dyelar has quit [Quit: Leaving.]
poet has joined #lisp
dyelar has joined #lisp
clothespin has quit [Ping timeout: 252 seconds]
oni-on-ion has joined #lisp
jackdaniel has quit [Quit: jackdaniel]
jackdaniel has joined #lisp
cosimone has joined #lisp
poet has quit [Quit: ERC (IRC client for Emacs 26.3)]
dyelar has quit [Quit: Leaving.]
Necktwi has quit [Quit: leaving]
brettgilio has joined #lisp
nopolitica has quit [Ping timeout: 246 seconds]
Necktwi has joined #lisp
gravicappa has quit [Ping timeout: 246 seconds]
Codaraxis has joined #lisp
EvW1 has joined #lisp
jack_rabbit has joined #lisp
dyelar has joined #lisp
efm has quit [Read error: Connection reset by peer]
useful_illusion has quit [Remote host closed the connection]
efm has joined #lisp
parjanya has joined #lisp
brettgilio_ has joined #lisp
dyelar has quit [Remote host closed the connection]
efm has quit [Client Quit]
stepnem has quit [Ping timeout: 268 seconds]
dyelar has joined #lisp
rgherdt has quit [Remote host closed the connection]
vlatkoB has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
brettgilio has quit [Ping timeout: 245 seconds]
rgherdt has joined #lisp
krid has joined #lisp
loskutak has joined #lisp
brown121408 has joined #lisp
brown121407 has quit [Ping timeout: 252 seconds]
shka_ has quit [Ping timeout: 265 seconds]
efm has joined #lisp
ralt has quit [Quit: Connection closed for inactivity]
orivej has quit [Ping timeout: 240 seconds]
bitmapper has quit [Ping timeout: 240 seconds]
EvW1 has quit [Ping timeout: 245 seconds]
root__ has joined #lisp
smokeink has quit [Remote host closed the connection]
root__ has quit [Remote host closed the connection]
notzmv has joined #lisp
ArthurStrong has joined #lisp
edgar-rft has joined #lisp
brown121407 has joined #lisp
brown121408 has quit [Read error: Connection reset by peer]
<copec> Has anyone seen this error before? https://unaen.org/pb/4a5
<copec> It is on both ccl and sbcl on macos.
<copec> I can't find any of the includes in libffi-types__grovel.c, so FFI_SYSV isn't defined
davepdotorg has joined #lisp
Davd33 has joined #lisp
clothespin has joined #lisp
<Bike> You can't find or it can't find?
davepdotorg has quit [Ping timeout: 240 seconds]
stepnem has joined #lisp
Davd33 has quit [Remote host closed the connection]
pnp has joined #lisp
gravicappa has joined #lisp
Cerbb has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
<Cerbb> i am trying to install clisp. I am on debian stretch and the package is not in the repositories, so I am trying to build it from the source. I get this error when I run make
<Cerbb> : #error oint_addr_mask does not cover CODE_ADDRESS_RANGE !!
<Cerbb>
krid has quit [Ping timeout: 250 seconds]
<jackdaniel> Cerbb: is there a particular reason you are building clisp (and not i.e sbcl which is far more popular among common lisp developers)
Lycurgus has joined #lisp
<jackdaniel> both implement the same standard (it is like i.e gcc and clang)
<Cerbb> i am trying to install a software called bergman http://servus.math.su.se/bergman/ and it says it needs clisp
<p_l> ugh, and the area that error'd used to be (if it isn't still) the most borked part of CLISP
<Cerbb> when i try to make bergman indeed it says that it does not find clisp
<p_l> starting an encounter with a programming language with "let
<p_l> *"let's port the build system to another implementation" is not necessarily a good idea, indeed :)
<p_l> though I thought that clisp was in debian repo
<Cerbb> as far as i understand is in debian buster, but not in debian stretch
amerlyq has quit [Quit: amerlyq]
gabot has quit [Ping timeout: 268 seconds]
<jackdaniel> hm, I don't know what the problem is. I'd write to clisp mailing list to ask if I were you
<Cerbb> can you direct me to the mailing list?
<jackdaniel> hang on
gabot has joined #lisp
<jackdaniel> Cerbb: ^
<Cerbb> i mean...in principle i could try to make bergman understand that it can use something else instead of clisp, right?
<Cerbb> thanks
efm has quit [Quit: Konversation terminated!]
<jackdaniel> I'd still try to build it with another CL, bergman site mentions only, that it was tested on clisp, not that it depends on clisp internal features
<jackdaniel> but who knows
<jackdaniel> also, if you are looking for an algebra system, there is also maxima
<Cerbb> actually, i usually use macaulay2. but i need to use a package on macaulay2 that calls bergman
amerlyq has joined #lisp
* jackdaniel gives a blank stare
sjl has quit [Ping timeout: 250 seconds]
<Bike> i can't even access the bergman website. blah.
sjl has joined #lisp
<Bike> yes, it wasn't working
<Bike> download page is a 404, too...
<Bike> oh there we go.
<jackdaniel> Bike: if that helps my browser got redirected to https
<jackdaniel> wait, no, it didn't
<jackdaniel> sorry for the noise
<Cerbb> if you go to the download page on the left it actually sends you there
<Cerbb> the download link in the middle of the page is broken
<Bike> the readme says you can install it "with stand alone psl, with reduce, or with common lisp", so maybe those other two things won't involve clisp
<Bike> never heard of them though
<jackdaniel> Pssst, Lisp! ;-)
<Bike> i think i don't want to know why math software is this dependent on the machine
Codaraxis has quit [Ping timeout: 245 seconds]
scymtym has quit [Ping timeout: 250 seconds]
<Cerbb> i am trying to install psl or reduce
<copec> Bike, I can't find, so I presume it can't find
<Bike> this code looks fuckin ancient. some of it's as old as i am
<Bike> but i found at least one ext:getvar, so using another lisp is nontrivial
<Bike> (defmacro DF (name arg &body forms) `(defmacro ,name (&rest ,(car arg)) `(let ((,',(car arg) (quote ,,(car arg)))) ,',@forms ) ) )
<Bike> on the other hand it's the only ext: i see
<Bike> but fixing bespoke 1996 code is a chore even if you are familiar with the language
nopolitica has joined #lisp
<Cerbb> mmm...this sounds way beyond what i am able to do
<Cerbb> xD
<Bike> oh, and the readme ends "Good luck - you'll need it!"
<Cerbb> yes
<Cerbb> and the developer does not really answer emails
<Bike> academia, mon
<pnp> Cerbb: Good luck - you'll need it!
<pnp> :-)
<Cerbb> i guess i could upgrade to buster, get clisp from the repositories and try to see if it works that way
<Bike> could maybe build clisp yourself... i don't know how stable that process is
<Bike> keeping in mind the minimum version is from like 2006
<jackdaniel> he tried (the first question prompting the discussion)
<Cerbb> that is what i tried right before coming here...
<Cerbb> i found a discussion that on my error suggests to configure with an option which should take care of it...but that solution did not work for me
<pnp> yes but there are a lot of ways to calculate the things you need without that package
<p_l> Cerbb: can you run docker there? https://hub.docker.com/r/nacyot/commonlisp-clisp/ this might of a help if it's not a problem
<Bike> oh, sorry.
<copec> It is in homebrew for linux, I'm seeing if it will build on my box
<Cerbb> p_l: you mean installing that instead of clisp and see if that works?
<p_l> Cerbb: on the odd chance that you might have had Docker available, you could use that image
<p_l> I haven't really touched debian stretch so I don't really know how annoying it would be to install it
<Cerbb> i guess i can install docker
iovec has joined #lisp
shifty has quit [Ping timeout: 276 seconds]
iovec has quit [Client Quit]
krid has joined #lisp
pilne has joined #lisp
lisbeths has joined #lisp
<lisbeths> is the mickleson language based on common
cosimone has quit [Remote host closed the connection]
mfiano2 has quit [Remote host closed the connection]
mfiano2 has joined #lisp
cosimone has joined #lisp
parjanya has quit [Remote host closed the connection]
<equwal> CLtL2 says (cons - -) should be ((cons - -) cons - -), but I can only get - to be NIL.
<equwal> (sbcl)
<equwal> - is supposed to be "the form that is currently being evaluated"
Lycurgus has quit [Quit: https://meansofproduction.biz Exit Quassel.]
<jackdaniel> I don't understand what you are asking / stating :(
<equwal> Why is - always nil?
<Bike> you mean the variable that's a minus sign, right?
ljavorsk has quit [Ping timeout: 252 seconds]
<equwal> yes
iovec has joined #lisp
poet has joined #lisp
<jackdaniel> did you type (cons - -) in the repl?
<Bike> (cons - -) gets me ((CONS - -) CONS - -) as i'd expect. where are you using it?
<equwal> I'm using it in the sly repl.
<Bike> it won't work in the middle of a function or anything
<Bike> no idea what sly does
<jackdaniel> equwal: try directly in the terminal
<equwal> Well, turns out it is a problem with sly.
<Bike> do * ** *** + ++ +++ work?
<jackdaniel> if sly differs in its repl then it is sly's bug
<jackdaniel> slime works correctly btw
<equwal> *, +, /, etc work
<Bike> well, maybe they missed one.
<Cerbb> p_l: i installed docker but apparently the option -t of docker pull is not a thing
<p_l> ahh, -t is not for pull
<Cerbb> so docker pull -t nacyot/commonlisp-clisp:apt does not do anything
<p_l> it's for run
<Bike> er
<Bike> no it's there. hm
<p_l> docker run --rm -i -t -v $(pwd):/source nacyot/commonlisp-clisp:apt clisp
<p_l> and you can also do
<p_l> docker run --rm -i -t -v $(pwd):/source nacyot/commonlisp-clisp:apt /bin/bash
<Cerbb> also...if i do git clone with that line, it seems the git repo does not exist
<p_l> and get a small ubuntu image where you can also run `apt-get update; apt-get install build-essential` and then compile
<p_l> Cerbb: what git repo?
<pjb> equwal: the sly REPL doesn't implement a CL REPL.
<p_l> Cerbb: the command I gave you should result in automatic download from dockerhub
<jackdaniel> Bike: but it is eval
<pjb> equwal: note this works in slime REPL.
<Cerbb> it is doing something
<jackdaniel> lexical binding doesn't take that
<Cerbb> let's see what happens
<jackdaniel> lexical binding doesn't go there*
<Bike> jackdaniel: - is a dynamic variable
<Bike> uh, i think
<Bike> clhs -
<lisbeths> sorry gtg
<Bike> oh wait
<Bike> it's using let, lol
<Bike> so it won't be bound during the evaluation in the next line
<Cerbb> mmm...maybe it worked
<pjb> Cerbb: you should reporr clisp build problems on the clisp mail lists.
<Bike> so yeah, looks like a sly bug. easy to fix at least
<Bike> if it's going through simple-repl, at least
<Bike> cltl2 is not the controlling standard, just so you know
<Bike> not that it differs here
<Bike> actually, emacs has this same code, so i guess simple-repl isn't used?
<jackdaniel> exactly, so I'd just say that it doesn't conform to the standard (described in clhs)
<equwal> CLtL2 has better explanation/examples on this.
<jackdaniel> it may, but it is not what implementations adhere to
<Cerbb> p_l: i ran your line...without sudo it gives a permission error...i tried with sudo and it runs, but i am not sure if it does what it downloads where it should
<Bike> i have no idea what slime is actually running... what a mystery
rotucer has quit [Quit: Quit]
rotucer has joined #lisp
<Cerbb> because then when i do the docker run as in https://hub.docker.com/r/nacyot/commonlisp-clisp/ to check if it worked, it still gives permission error and it only works with sudo
ljavorsk has joined #lisp
<Bike> oh, it's eval-region, probably
<Bike> which binds - itself
<Bike> then swank-repl repl-eval takes care of the slashes and such.
<Bike> wonder what the simple-repl is then. it's apparently not inferior lisp
<jackdaniel> Bike: for communication style nil
<equwal> the function INTERACTIVE-EVAL in toplevel.lisp looks interesting.
<equwal> It looks like it should be setting - to the form.
<equwal> found the problem:
<equwal> (setf - form)
<p_l> Cerbb: you probably forgot to add yourself to "docker" group or something like that
rgherdt has quit [Remote host closed the connection]
<Cerbb> i see
PuercoPope has joined #lisp
lavaflow has quit [Ping timeout: 265 seconds]
scymtym has joined #lisp
<pjb> equwal: you could run your own REPL in the sly REPL. For example: (com.informatimago.common-lisp.interactive.interactive:repl)
<pjb> equwal: then it would work.
vseloved has joined #lisp
rgherdt has joined #lisp
<jackdaniel> not if you are interested in the selling point of slime/sly integration like inspection and/or presentations
<equwal> pjb: I'm not going to drop sly because of this bug.
efm has joined #lisp
cosimone has quit [Quit: Quit.]
ljavorsk has quit [Ping timeout: 268 seconds]
lavaflow has joined #lisp
lisbeths has quit [Ping timeout: 250 seconds]
nopolitica has quit [Quit: WeeChat 2.6]
<Cerbb> i think i made it
<pjb> equwal: When you run a function in sly, you don't drop sly!
<Cerbb> thank you everyone for now
<pjb> equwal: try to start up your brains.
<equwal> thank you pjb, I will do so immediately.
Cerbb has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
<equwal> I think simple-repl is the issue, since it never binds - to anything.
phablet has joined #lisp
amerlyq has quit [Quit: amerlyq]
libertyprime has quit [Ping timeout: 245 seconds]
jackdaniel has quit [Quit: jackdaniel]
ljavorsk has joined #lisp
dddddd has quit [Remote host closed the connection]
malfort has joined #lisp
Guest75462 has quit [Quit: The Lounge - https://thelounge.chat]
Guest75462 has joined #lisp
X-Scale` has joined #lisp
X-Scale has quit [Ping timeout: 240 seconds]
X-Scale` is now known as X-Scale
<equwal> Submitted a pull request on sly, thanks for the help. https://github.com/joaotavora/sly/pull/289
<Bike> are you sure that's actually the code that it's going through?
<Bike> even if it is you could probably just use let*
<equwal> Why would that be simpler?
<Bike> i mean, just change the let that's there to a let*
<Bike> instead of the backquoted form and stuff
<equwal> yes, that is better.
poet` has joined #lisp
poet has quit [Ping timeout: 250 seconds]
jfb4 has joined #lisp
jfb4_ has quit [Ping timeout: 268 seconds]
<equwal> I'm sure that simple-repl is not being run, but I think it was still broken earlier
X-Scale` has joined #lisp
X-Scale has quit [Ping timeout: 276 seconds]
X-Scale` is now known as X-Scale
<equwal> probably slynk-mrepl.lisp
<Bike> i think that's the contrib for running more than one repl at once
<Bike> on my slime the contrib is just repl, and mrepl is separate, but sly doesn't seem to have a repl contrib
<equwal> I ran it on a fresh install, and the fix in the pull req works out of the box.
random-nick has quit [Ping timeout: 240 seconds]
slyrus_ has quit [Read error: Connection reset by peer]
<equwal> (I force pushed it in)
<equwal> I just did one of these: grep -R "\\+\\+\\+"
nowhereman has joined #lisp
slyrus has joined #lisp
shifty has joined #lisp
sammich has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
<equwal> I think mrepl is the server protocol extension to nrepl.
sammich has joined #lisp
Bike has quit [Quit: Bike]
hhdave has joined #lisp
brettgilio_ has quit [Remote host closed the connection]
Codaraxis has joined #lisp
milanj has joined #lisp
brettgilio has joined #lisp
rgherdt has quit [Ping timeout: 276 seconds]
gabiruh_ has joined #lisp
slyrus_ has joined #lisp
gabiruh has quit [Ping timeout: 245 seconds]
slyrus has quit [Ping timeout: 250 seconds]
rotucer has quit [Ping timeout: 252 seconds]
pnp has quit [Remote host closed the connection]
lottaquestions_ has joined #lisp
rotucer has joined #lisp
poet` has left #lisp ["ERC (IRC client for Emacs 26.3)"]
hhdave has quit [Quit: hhdave]
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
<no-defun-allowed> With respect to the MOP, is the way slots are stored in an instance standardised?
<no-defun-allowed> I think a few times in the book I read about a "storage vector" in instances, but I don't recall if that's just how their example works or if all MOP implementations work like that.
<no-defun-allowed> Looks like I want standard-instance-access.
<phoe> no-defun-allowed: I remember this being discussed some time ago
<phoe> AFAIR all that is standardized is that each slot is indexed by an unsigned-byte
<no-defun-allowed> Right.
<phoe> so you can standard-instance-access with the slot index
<no-defun-allowed> Maybe I am approaching this wrong, though. I have a metaclass which sets up instances in a way that I can access slots using either the normal CLOS machinery or the name used in the serialised format.
Bike has joined #lisp
<no-defun-allowed> Currently to use the serialised name, we have a hash table of those names to slot names, and then take the slot-value from there, but I think having those two levels of indirection causes it to be much slower than just taking slot-value.
<phoe> is the name used in the serialized format a string?
<no-defun-allowed> Yes.
<phoe> that's likely going to be slow anyway
orivej has joined #lisp
<phoe> turn these strings into symbols, make them extra readers/writers for the slots.
loskutak has quit [Ping timeout: 252 seconds]
<phoe> if you want isolation, intern them in a separate clean package.
<no-defun-allowed> (We also want to avoid interning anything, because the serialised objects are sent to us from the network.)
Codaraxis has quit [Read error: Connection reset by peer]
<phoe> ooh, untrusted input. Well.
<phoe> I'd make an EQUAL hash table that binds strings to accessor functions. Don't think I can make this any faster.
<phoe> Since each time we need to make a string comparison anyway.
<no-defun-allowed> I did some micro-benchmarking and gethash-ing didn't seem too slow relative to the speed of the accessor.
<phoe> Or slot names, that's equivalent.
<no-defun-allowed> Yeah, that's exactly what we do, but I'm worried using slot names is going to be a problem since the slot name would have to be looked up too.
<phoe> you can use lambdas that call standard instance access instead
<phoe> that's as fast as you can get since it's literally array lookup
<no-defun-allowed> That's what I have in mind to try now.
<phoe> beware that you bypass most of CLOS this way.
<phoe> so no generic functions, no methods, no :around/:after/:before, no access protocols for you.
<no-defun-allowed> Sure.
<phoe> are you using CLOS functionality anywhere else?
<no-defun-allowed> Is the existence of a (setf standard-instance-access) guaranteed in the MOP? http://metamodular.com/CLOS-MOP/all-no-methods.html does not mention it.
<Bike> yes.
<Bike> it's listed as a reader rather than an accessor there because of typos
<no-defun-allowed> Probably would be.
clothespin has quit [Ping timeout: 245 seconds]
longshi has joined #lisp
<no-defun-allowed> Thanks Bike
<no-defun-allowed> Is there another function like that to check if the slot is bound then?
<Bike> nope.
<no-defun-allowed> Yikes.
<no-defun-allowed> I think I can only really use s-i-a with implementation-specific code to check if it's bound then.
snapekang has quit [Quit: no]
<Bike> strictly speaking, you can't use s-i-a on an unbound slot. it's in the page.
<no-defun-allowed> Indeed.
<phoe> otherwise the results are undefined
<Bike> probably if you do you'll just get an unbound marker of some kind, tho
<phoe> so either keep all the slots bound or let the implementation invoke unicorns
<no-defun-allowed> SBCL does return one of those markers, and it's typep to sb-kernel::random-class.