jackdaniel 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/> | offtopic --> #lispcafe
kevingal has quit [Quit: leaving]
villanella has quit [Ping timeout: 272 seconds]
charles` has joined #lisp
<charles`> Hi buds
amb007 has quit [Ping timeout: 260 seconds]
<Xach> hello charles, what are you up to in lisp-land today?
red-dot has joined #lisp
charles` has quit [Ping timeout: 264 seconds]
thmprover has joined #lisp
ex_nihilo has joined #lisp
astronavt has left #lisp [#lisp]
svetlyak40wt has joined #lisp
astronavt has joined #lisp
svetlyak40wt has quit [Ping timeout: 246 seconds]
sz0 has quit [Quit: Connection closed for inactivity]
Krystof has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
zulu-inuoe has quit [Read error: Connection reset by peer]
zulu-inuoe has joined #lisp
shifty has quit [Ping timeout: 256 seconds]
jonatack has quit [Read error: Connection reset by peer]
pagnol has joined #lisp
epony has joined #lisp
antoszka has quit [Quit: WeeChat 2.7]
mrSpec has quit [Quit: ZNC - http://znc.in]
beach` has joined #lisp
<mfiano> Slow here today
<mfiano> Xach: How much longer do we have to get our releases ready? :)
beach has quit [Ping timeout: 272 seconds]
srandon111 has quit [Quit: leaving]
luni has quit [Quit: Connection closed]
hhdave has quit [Ping timeout: 240 seconds]
antoszka has joined #lisp
bjorkintosh has joined #lisp
aeth_ has joined #lisp
aeth has quit [Disconnected by services]
aeth_ is now known as aeth
ralt has quit [Quit: Connection closed for inactivity]
edgar-rft has quit [Quit: Leaving]
orivej has quit [Ping timeout: 272 seconds]
amb007 has joined #lisp
pillton has joined #lisp
rdrg109 has joined #lisp
semz has quit [Ping timeout: 260 seconds]
perrier-jouet has quit [Ping timeout: 264 seconds]
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 256 seconds]
Lord_of_Life_ is now known as Lord_of_Life
semz has joined #lisp
charles` has joined #lisp
alfred188 has joined #lisp
shifty has joined #lisp
rdrg109 has quit [Quit: WeeChat 3.0]
<charles`> Hi everyone
shifty has quit [Ping timeout: 272 seconds]
shifty has joined #lisp
<thmprover> Howdy, charles`
<thmprover> Egads, bootstrapping CCL on Raspberry Pi is a nightmare.
prxq_ has joined #lisp
prxq has quit [Ping timeout: 240 seconds]
hineios4 has joined #lisp
hineios has quit [Ping timeout: 240 seconds]
hineios4 is now known as hineios
kilimanjaro has quit [Ping timeout: 264 seconds]
<charles`> thmprover, low processing power?
<thmprover> The bootstrapping instructions are vague at times; it seems clear that the documentation is written for people who already know what they're doing (i.e., not me).
<thmprover> And low processing power, that also slows things down.
kilimanjaro has joined #lisp
<thmprover> It took 2 hours to compile Emacs from scratch, for example. But CCL is much faster by comparison.
<red-dot> palter : Nicely done Gary. Been waiting a long time for a native Mac version.
Sheilong has quit []
zulu-inuoe has quit [Read error: Connection reset by peer]
<thmprover> Let's see how long it takes...
<charles`> Does anyone know if it is possible to associate warn with a line or form in a macro so that SLY will pick up on it and draw red squigillies in the buffer?
<Bike> You mean, you want to signal a warning in a macroexpander, and have sly mark the location?
<Bike> does it not do that already, marking the macro form?
<Bike> or do you want the marking to be specifically some subform of the macro form?
<charles`> yes, I want to mark the subform. The one that is actually problematic
<Bike> only works in sbcl and clasp though. other implementations don't have an analogous hook
<Bike> (or if they do, this library hasn't been informed of it, and nor have i)
<charles`> It looks like I don't have to do anything special. this appears to be straight black magic.
<Bike> well
<Bike> the magic is how implementations report conditions signaled from macroexpanders. sbcl and clasp associate such conditions with source information specially, and sly (and slime, and other DEs hopefully) use that source information to mark the errant forms
<Bike> also the library uses exported interfaces, so it should be reasonably stable.
<charles`> This is just so good
<charles`> absolutely beautiful
<Bike> happy to be of assistance.
shifty has quit [Ping timeout: 240 seconds]
beach` is now known as beach
hendursaga has quit [Remote host closed the connection]
Alfr_ has joined #lisp
igemnace has joined #lisp
dbotton has joined #lisp
hendursaga has joined #lisp
<beach> Good morning everyone!
<charles`> Good morning beach
Alfr has quit [Ping timeout: 260 seconds]
dbotton has quit [Quit: Leaving]
<charles`> What is up today beach?
nullkl has joined #lisp
<beach> Well, the day before yesterday, I finished restructuring the way the SICL code is organized as binary (though I don't generate binary yet) according to my paper on call-site optimization. So yesterday, I spend the day writing some documentation. And I am still debating what to do next.
<beach> charles`: What about you?
<beach> I have given some more thought to my idea for register allocation, but not making much progress at the moment. I really should concentrate on one of the activities for generating native SICL code.
<charles`> I believe I just finished my tail recursion optimization macro, so I need to send that out into the world and integrate it into issr-core
<beach> Great!
<charles`> I wonder it could be used internally by a lisp implementation. I'm probably missing something.
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
<beach> It sounds strange to me that a macro can optimize tail recursion. How does it work?
<charles`> I'm doing it a similar way to the way I think clojure does it.
<beach> Do you care to give a short explanation of how that way works?
<charles`> use tagbody, replace all tail calls with saving arguments, teleporting to beginning of tagbody, and setting the arguments
housel has quit [Read error: Connection reset by peer]
<beach> I see. Thanks.
<beach> That strategy works only for tail calls where the caller and the callee are the same function, right?
<beach> Usually, a Common Lisp implementation would have more ambitious goals for tail calls, and I don't think the more ambitious version could be handled with a macro.
hiroaki has joined #lisp
<charles`> function b calls function a that calls function b. It certainly won't work for that. I would think they would do a better job, but I am specifically working on this because sbcl isn't optimizing my function.
<beach> I see. That's weird though. SBCL usually does. Are you sure the recursive call is in a tail-call position?
igemnace has quit [Remote host closed the connection]
<beach> Sometimes, things could be hidden, like bindings of special variables.
<charles`> I'm pretty sure, but I will be sure, when I try my macro on it because it will warn if there are non-tail calls.
<beach> Wow, how does it do that? I mean, take (defun f (x) (let ((y ...)) ... (f y))) is in a tail-call position if Y is not special, but may not be if it is.
asarch has joined #lisp
<charles`> I just don't catch that. I'm not that good
<asarch> Any HTML form generator?
<beach> charles`: Whew! I though I had missed something.
gabiruh has quit [Quit: ZNC 1.7.5 - https://znc.in]
<asarch> Or, even better, any HTML Form handler?
<charles`> beach: if there is some way to check if a symbol is a special variable, I think I could catch that case though
nullkl has quit [Ping timeout: 264 seconds]
gabiruh has joined #lisp
<beach> I haven't finished my morning coffee yet, so I may not remember correctly, but I don't think there is a portable way of determining that, though obviously, each implementation must be able to determine it.
<charles`> I could use *macroexpand-hook* if the macro is defparameter or defvar, add a property 😁.
red-dot has joined #lisp
<Bike> no, there is not a portable way to determine that a symbol is declared special in an environment.
<Bike> well, not a standard way. you can sort of hack up something portable using cltl2 interfaces.
<beach> Thanks! As I recall, we wrote some "interesting" code in the "hostile" global environment to try to determine it.
<Bike> yeah...
<beach> Maybe someone should write a TRIVIAL-SPECIAL-VARIABLE library?
<beach> That sounds like a Shinmera specialty, but he is not around very much anymore it seems.
<Josh_2> asarch: hunchentoot ;)
Josh_2 has quit [Remote host closed the connection]
<charles`> beach: I made a interaction with him last month
<fiddlerwoaroof_> I think Shinmera mostly hangs around elsewhere on IRC
<beach> Yes, he is in #sicl, but doesn't make much noise.
<conjunctive> Hi, in CLOS, how would you upcast a generic function call, invoking it as if the object being dispatched upon were an instance of the parent/inherited class?
<beach> clhs call-next-method
shifty has joined #lisp
<beach> conjunctive: ↑
<conjunctive> beach: Thanks for this. If I am outside of a method body, is there a way to do something similar?
<Bike> no. clos is dynamic pretty exclusively.
<beach> Sure, call your outside code passing #'call-next-method as an argument, and then invoke it with (funcall ...).
<fiddlerwoaroof_> This works for special-p, in at least some cases: https://fwoar.co/pastebin/18f0ce7704340c90e868780654b7f4041c58fb47.nil.html
<fiddlerwoaroof_> It's probably non-conforming for most symbols in the CL package, though
<fiddlerwoaroof_> And, it's a macro, which has its own issues
aartaka has joined #lisp
<beach> fiddlerwoaroof_: It looks familiar. We must have done something like that in the "hostile" environment.
aartaka_d has joined #lisp
aartaka has quit [Ping timeout: 260 seconds]
<beach> conjunctive: Did you see the answers?
<conjunctive> Thank you Bike & beach! This was very helpful
<beach> Great!
<charles`> Good night
charles` has quit [Quit: Leaving.]
waleee-cl has quit [Quit: Connection closed for inactivity]
<Nilby> There's some weird edge cases with making a specialp, but it mostly works.
galex-713 has quit [Ping timeout: 272 seconds]
Bike has quit [Quit: Connection closed]
<Nilby> One can even check it at both macroexpand time and run time, but of course the oddly spelled makunbound exists.
galex-713 has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
zooey has quit [Remote host closed the connection]
Blukunfando has quit [Ping timeout: 272 seconds]
zooey has joined #lisp
tmf has quit [Ping timeout: 260 seconds]
thmprover has quit [Quit: For He Was Great of Heart]
KeyboardWorrier has quit [Ping timeout: 256 seconds]
KeyboardWorrier has joined #lisp
Aurora_v_kosmose has quit [Remote host closed the connection]
Aurora_v_kosmose has joined #lisp
andreyorst has quit [Quit: WeeChat 2.8]
andreyorst has joined #lisp
jurov_ has joined #lisp
jurov has quit [Ping timeout: 256 seconds]
tmf has joined #lisp
jurov has joined #lisp
pagnol has quit [Remote host closed the connection]
<contrapunctus> beach: I spoke to Shinmera a few days ago in #shirakumo , FWIW
jurov_ has quit [Ping timeout: 264 seconds]
aeth has quit [Ping timeout: 260 seconds]
aeth has joined #lisp
aindilis has quit [Ping timeout: 272 seconds]
<beach> contrapunctus: Yeah, he's around. Just not very active as far as i can tell, but maybe he is in #shirakumo.
sveit has quit [Read error: Connection reset by peer]
simplegauss has quit [Read error: Connection reset by peer]
rgherdt has joined #lisp
Cymew has joined #lisp
hjudt has joined #lisp
Sauvin has joined #lisp
<fiddlerwoaroof_> clhs SYMBOL-VALUE
<fiddlerwoaroof_> Will this always succeed if the symbol is declared special?
<beach> No.
<fiddlerwoaroof_> Hmm, yeah, I guess you could have an unbound special variable
<beach> (defparameter *v* 234) (progv '(*v*) '() (symbol-value '*v*))
__jrjsmrtn__ has joined #lisp
<beach> clhs progv
_jrjsmrtn has quit [Ping timeout: 256 seconds]
<beach> "If too few values are supplied, the remaining symbols are bound and then made to have no value."
Cymew has quit [Ping timeout: 240 seconds]
<fiddlerwoaroof_> Yeah, I forgot about that edge case
<beach> I guess you could do the same with makunbound.
<fiddlerwoaroof_> or defvar
<fiddlerwoaroof_> (defvar *foo*) (symbol-value '*foo*)
<beach> That's even simpler.
<beach> I was demonstrating that it can also can have no dynamic value even though it has a global one.
aeth has quit [Ping timeout: 256 seconds]
nullkl has joined #lisp
<fiddlerwoaroof_> Yeah, that makes sense
<beach> Speaking of which, the Common Lisp HyperSpec has some confusing terminology.
aeth has joined #lisp
<beach> Sometimes "bound" implies "has a value" as in MAKUNBOUND. But on the PROGV page, it is bound but has no value.
<beach> Note to self: clean up the terminology bound/value for WSCL.
<fiddlerwoaroof_> The glossary acknowledges this, I think
<fiddlerwoaroof_> bound -> shadow
<beach> OK, but then MAKUNBOUND does not make the variable unbound.
<fiddlerwoaroof_> Yeah
<beach> It makes the variable have no value.
nullkl has quit [Ping timeout: 260 seconds]
<beach> The best solution would be to invent a new term for "have no value".
<beach> "worthless"? :)
<fiddlerwoaroof_> Yeah, I think the glossary just notes that bound is ambiguous, so makunbound uses bound[1] and progv uses bound[2]
<fiddlerwoaroof_> I think the docs for PROGV should just say "PROGV shadows any existing bindings of the variable, making it unbound"
<beach> Oh, so you take the position that "bound" means "has no value". That would go better with MAKUNBOUND.
Nilby has quit [Remote host closed the connection]
<beach> i.e., we wouldn't have to rename it.
Nilby has joined #lisp
<fiddlerwoaroof_> Yeah, I think there's a typo?
<beach> That's a good idea.
<beach> Now, if I could just convince someone to take the dpANS and turn it into a single LaTeX document (containing multiple files obviously), we could start working on WSCL.
narimiran has joined #lisp
varjag has joined #lisp
bitmapper has quit [Quit: Connection closed for inactivity]
shifty has quit [Ping timeout: 260 seconds]
<recalloc> Does anybody have good resources to find memory leaks in dependencies? I've no idea how to approach this problem I've got somewhere in lispcord.
shka_ has joined #lisp
<carkh> is there an existing library parsing sexpr ?
<carkh> i mean from sexpr to syntax tree
<carkh> rather than a reader
<beach> minion: Please tell carkh about Cleavir.
<minion> carkh: Cleavir: A project to create an implementation-independent compilation framework for Common Lisp. Currently Cleavir is part of SICL, but that might change in the future
<carkh> thanks let me check this out
<beach> We turn S-expressions or CSTs into ASTs, using a first-class global environments to determine the meaning of the expression.
<beach> It is not "packaged" to be used independently, but the functionality is certainly there.
Cymew has joined #lisp
<carkh> looks like a whole lot more than what i require
toorevitimirp has joined #lisp
<beach> Maybe so.
<carkh> i was looking for something more akin to a parser generator, but instead of characters, we have atoms, and some support for nesting
<beach> But that's what READ does.
<carkh> well no, read works with character input doesn't it ?
<beach> You may want to check Eclector then. It turns sequences of character into Concrete Syntax Trees.
<loke[m]> carkh: I think you may be looking for SAFE-READ?
<carkh> ah sorry i think i didn't make myself clear enough
<fiddlerwoaroof_> carkh: you want a parser for something like '(a b c d e)?
<carkh> i want seprx in, and sexpr out
<carkh> yes that's it fiddlerwoaroof_
<beach> carkh: Maybe we need some examples.
<loke[m]> So just the parser part without the tokeniser.
<carkh> maybe i'm trying to code something akin to cl-who
<fiddlerwoaroof_> I wrote something like that using smug when I tried to implement most of a PHP parser
<carkh> but i want good error reporting
pve has joined #lisp
h4ck3r9696 has joined #lisp
<fiddlerwoaroof_> But, I was using parser-combinators which mostly have bad error reporting :)
<carkh> ahh =)
svetlyak40wt has joined #lisp
<fiddlerwoaroof_> I think you might be able to go quite a ways with macros, though: it sounds to me like you're basically talking about a macroexpander :)
<carkh> well that's the thing, i want to use this for a macro
edgar-rft has joined #lisp
<fiddlerwoaroof_> Error reporting would have to be hand-rolled, but you can always (ERROR "something descriptive") in your macro definition
<carkh> i want to make sure the tree passed to it is correct
prxq_ has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
prxq has joined #lisp
<fiddlerwoaroof_> I believe SICL loop uses a strategy like this too.
<carkh> and i'd rather avoid coding an ad-hoc thing for which facilities might already exist
<carkh> in the clojure world they have this spec thing, which they say isn't for parsing, but does it well enough
h4ck3r9696 has quit [Client Quit]
<carkh> ok that's much reading already =)
<carkh> thanks for the help, i'll go and read all that
asarch has quit [Quit: Leaving]
anticrisis has quit [Read error: Connection reset by peer]
<carkh> looks like i'll have to rool my own, stealing ideas left and right =)
<carkh> roll*
otwieracz has joined #lisp
otwieracz has left #lisp [#lisp]
random-nick has joined #lisp
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
varjag has quit [Ping timeout: 256 seconds]
red-dot has joined #lisp
surabax has joined #lisp
midre has quit [Ping timeout: 258 seconds]
jlarocco has quit [Ping timeout: 264 seconds]
penguwin has quit [Quit: Ping timeout (120 seconds)]
midre has joined #lisp
penguwin has joined #lisp
mrSpec has joined #lisp
mrSpec has quit [Changing host]
mrSpec has joined #lisp
midre has quit [Ping timeout: 246 seconds]
midre has joined #lisp
skapata has quit [Read error: Connection reset by peer]
ljavorsk has joined #lisp
teej has quit [Ping timeout: 272 seconds]
totoro2023 has quit [Read error: Connection reset by peer]
totoro2023 has joined #lisp
teej has joined #lisp
pillton has quit [Remote host closed the connection]
pillton has joined #lisp
aartaka has joined #lisp
zacts has joined #lisp
kenran has joined #lisp
aartaka_d has quit [Ping timeout: 264 seconds]
aartaka has quit [Ping timeout: 240 seconds]
aartaka has joined #lisp
toorevitimirp has quit [Ping timeout: 256 seconds]
hhdave has joined #lisp
vhost- has quit [Quit: WeeChat 2.8]
nullkl has joined #lisp
Nilby has quit [Ping timeout: 260 seconds]
ljavorsk_ has joined #lisp
nullkl has quit [Ping timeout: 272 seconds]
aartaka has quit [Ping timeout: 256 seconds]
iskander- has joined #lisp
vhost- has joined #lisp
vhost- has quit [Changing host]
vhost- has joined #lisp
iskander has quit [Ping timeout: 240 seconds]
zacts has quit [Quit: leaving]
skapata has joined #lisp
gj has joined #lisp
<gj> hello!
<beach> Hello gj.
madage has quit [Remote host closed the connection]
madage has joined #lisp
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
<gj> i realise that i never actually asked my question that i mentioned last time
<gj> i did figure it out, though
<beach> That's true. We assumed you figured it out.
aeth has quit [Ping timeout: 256 seconds]
kenran has quit [Read error: Connection reset by peer]
<gj> hmm, i am not sure if this is a strange question, but is there anything that was very helpful to you when you were learning common lisp?
<gj> or, anything that you wish you had known earlier?
aeth has joined #lisp
<jackdaniel> sure, that steele bank common lisp is not software created by a bank corporation ;)
hendursa1 has joined #lisp
<jackdaniel> steel*
<beach> I wish someone had convinced me that CLOS is great. That way I would have learned Common Lisp earlier and wasted many fewer years of my life.
<gj> lol
<gj> mmm, i am finding that common lisp is really expanding my knowledge and creativity, much more than python...
<gj> you can really do so much with it. it is so great.
<beach> Something that is essential to know is the correct definition of "call by value". And the meaning of what I call "uniform reference semantics".
kenran has joined #lisp
hendursaga has quit [Ping timeout: 268 seconds]
<beach> Many newbies are confused about code like this: (defun f (x) (push 234 x)) and then (defparameter *l* '()) then (f *l*) then *l* => NIL.
<beach> Some people (including the creators of the language R) think that "call by value" means copying structured values before passing them to the callee. But it just means that argument forms are evaluated before the callee is invoked.
<beach> And some people think that Common Lisp uses "call by reference" just because Common Lisp values behave as if they were all references.
<ecraven> just make it all immutable, then you won't be able to observe these problems :P
<beach> Right, that's the basis of functional programming.
ljavorsk_ has quit [Quit: I'm out, bye]
<ecraven> I argued that with a professor once, he said "a reference is passed, thus this is call-by-reference"
ljavorsk has quit [Quit: I'm out, bye]
ljavorsk has joined #lisp
<beach> That only goes to show that many professors are incompetent when it comes to teaching programming.
<beach> I happen to know quite a few.
<gj> @beach i am confused about code like that
<beach> My solution to that problem is to follow the advice of the CACM article that I read a few years back, "Beyond MOOCs" I think the title was.
<beach> I think we need to create web-based "lecture series", structured as a graph of short nodes containing text, video, animations, etc. And we need to structure the graph so that students can dig deeper into a particular subject if that is desired, and, on the contrary, skip nodes that have contents that the student already knows.
<beach> gj: Do you know some language such as C?
random-nick has quit [Ping timeout: 260 seconds]
Oddity- has quit [Ping timeout: 264 seconds]
aartaka has joined #lisp
<beach> int f(int x) { x += 3;} and then int xx = 234; then f(xx); then printf("%d", xx);
red-dot has joined #lisp
<beach> What is printed?
<ecraven> beach: indeed, but that would mostly benefit the student, not the (existing) professors and universities, so it's an uphill race...
* beach apologizes for C mistakes, as he hasn't used it for some time.
<beach> ecraven: Exactly. So we need to convince decision makers, not professors.
<beach> ecraven: Like the people who give all this money to incompetent professors.
Oddity has joined #lisp
h4ck3r9696 has joined #lisp
<beach> gj: Do you understand that C code?
<gj> no, i am sorry. i have never learned any C.
<beach> I guess someone could translate it to Python. My Python is quite rusty.
<gj> though, *i* in your lisp example was nil originally yes? but (f *i*) would return (234)
<ecraven> the python is almost the same as C here... def f(x): x = x + 3 xx = 234 f(xx) print(xx)
<beach> I did not say anything about the return value of the call to F.
<ecraven> only the second line (x = x + 3) is indented
<ecraven> gj: the point is, f(x) does *not* change the global value of xx
<gj> i see
<beach> And that is true for the vast majority of programming languages.
<ecraven> gj: do you understand *why* the global value is not changed?
<beach> Yet, when newbies come to Common Lisp, for some reason, they expect the result to be different.
<ecraven> beach: because ... macros! and magic! ;)
<ecraven> and NLAMBDA :P
<beach> OK, so let me formulate it this way then: One really good thing to know when learning Common Lisp is that it behaves like the vast majority of programming languages when it comes to function calls and lexical variables.
<gj> thank you
<beach> Pleasure.
<gj> i do understand why the global variable is not changed, yes
<beach> So in fact, you were NOT confused by that code.
<gj> yes, it just took me a little while to think about it!
admich has joined #lisp
<gj> ah, also, are there any books you recommend? (about common lisp)
<beach> The usual bunch: PCL, PAIP, On Lisp.
<beach> Keenes Book on CLOS.
<beach> AMOP.
<beach> Roughly in that order.
<beach> Oh, and the CLIM specification. That's how I learned what CLOS is really about.
<gj> got it! i started with Practical Common Lisp. i also read a few chapters of Land Of Lisp, which was quite enjoyable.
mrcom has quit [Quit: This computer has gone to sleep]
<beach> My (admittedly small) family gave me "Land of Lisp" for my birthday. I am disappointed by the seemingly total lack of respect for established terminology.
<beach> Like Common Lisp does not have any "commands" as it claims (plus it uses "command" both to mean "form" and "operator").
<beach> And it says (let (variable declarations) ...) but those are "bindings", not declarations.
<beach> And that's just after a chapter and a half.
<gj> hmm, so is the problem only in the wording of the book?
<beach> Only?
<beach> I think it is an absolute requirement for meaningful exchanges to use the right terminology.
attila_lendvai has joined #lisp
<gj> ah 'only' was not the right word there. i meant: is there still benefit in following along with the examples and exercises, despite the lack of respect for the established lisp terminology?
<beach> It looks like that so far, yes.
<gj> i quite like the idea that is put forward in chapter 5, a text-based game adventure
gj has quit [Quit: Connection closed]
Nilby has joined #lisp
random-nick has joined #lisp
dhil has joined #lisp
kenran has quit [Quit: leaving]
admich has quit [Ping timeout: 265 seconds]
perrier-jouet has joined #lisp
heisig has joined #lisp
karlosz has quit [Ping timeout: 240 seconds]
nullkl has joined #lisp
Nilby` has joined #lisp
rogersm has joined #lisp
nullkl has quit [Ping timeout: 265 seconds]
Nilby has quit [Ping timeout: 264 seconds]
Nilby` has quit [Ping timeout: 264 seconds]
mrcom has joined #lisp
admich has joined #lisp
vegansbane6963 has quit [Quit: The Lounge - https://thelounge.chat]
varjagg has joined #lisp
orivej has joined #lisp
varjagg has quit [Ping timeout: 272 seconds]
Krystof has joined #lisp
VincentVega has joined #lisp
vegansbane6963 has joined #lisp
kam1 has joined #lisp
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
<VincentVega> Does anyone know of a preexisting function for this: https://pastebin.com/TEGAUYm3
<VincentVega> also kind of interested in how one would approach this in a functional manner
<jackdaniel> I don't get the part about checking for keywords first and returning when the remainder is not a plist with keys being keywords
<jackdaniel> other than that, alexandria:plist-alist gives you '(:a 1 :b 2) -> '((:a . 1) (:b . 2))
mrcom has quit [Quit: This computer has gone to sleep]
VincentVega has quit [Quit: Connection closed]
VincentVega has joined #lisp
<VincentVega> jackdaniel: it's sometimes customary to supply extra args before the body in some macros like that, that's what I was looking for : )
<heisig> VincentVega: ...and here is your functional implementation of the same thing: https://gist.github.com/marcoheisig/646de30c95908ef131de71d67e7b176b
admich` has joined #lisp
<TMA> I like the (macro-name (extra-args...) body) idiom better
<VincentVega> TMA: well, that's what i have unfortunately in another library : (
Sheilong has joined #lisp
<VincentVega> TMA: although, not really unfortunately, it just works out there nicely
admich has quit [Ping timeout: 272 seconds]
<VincentVega> heisig: thanks, though the original example is to split the sequence like (:keyword expr1 :some-keyword expr2  <non-keyword> <body>) into ((:keyword expr1) (:some-keyword expr2)) and (<non-keyword> <rest of the list>)
davros has quit [Remote host closed the connection]
<heisig> Oh, sorry, I hadn't looked at the example so closely. In that case, simply replace the error clause with something else. Or listen to TMA's advice.
<VincentVega> heisig: ok, trivia:match seems like a decent approach for this, thank you!
davros has joined #lisp
aartaka has quit [Read error: Connection reset by peer]
aartaka_d has joined #lisp
admich` has quit [Ping timeout: 265 seconds]
rogersm_ has joined #lisp
nullkl has joined #lisp
rogersm_ has quit []
<jmercouris> I want to call a function, can I know if it accepts key arguments or not?
<jmercouris> AND can I test if it accepts a specific key argument?
<jmercouris> obviously I COULD try to funcall it and have a condition
<jmercouris> but is there another way?
<jmercouris> I don't want to trigger errant conditions left and right
_paul0 has joined #lisp
nullkl has quit [Ping timeout: 246 seconds]
<jmercouris> maybe I use symbol function and inspect
paul0 has quit [Ping timeout: 256 seconds]
<heisig> jmercouris: You could try https://github.com/Shinmera/trivial-arguments and check the lambda list.
<jmercouris> swank::arglist
<jmercouris> Aha, that is it
<jmercouris> trivial arguments is not nearly as good
<jmercouris> and then, the key arguments are like this
<jmercouris> (nth-value 3 (alex:parse-ordinary-lambda-list argument-list))
<jmercouris> it was a good suggestion though, thanks
rogersm has quit [Quit: Leaving...]
jonatack has joined #lisp
luni has joined #lisp
ljavorsk has quit [Ping timeout: 240 seconds]
jrm has joined #lisp
Bike has joined #lisp
drl has joined #lisp
VincentVega has quit [Quit: Connection closed]
drl has quit [Quit: Leaving]
nebh^ has quit []
cage_ has joined #lisp
bitmapper has joined #lisp
waleee-cl has joined #lisp
pfdietz has quit [Ping timeout: 240 seconds]
Xach has quit [Ping timeout: 265 seconds]
Xach has joined #lisp
hjudt has quit [Ping timeout: 240 seconds]
prxq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
prxq has joined #lisp
wsinatra has joined #lisp
REDman2k1 has quit [Quit: Ohhhhhh Yeah Baby, I've got LitilScript!]
Josh_2 has joined #lisp
<Josh_2> Afternoon
<beach> Hello Josh_2.
kam1 has quit [Read error: Connection reset by peer]
kam1 has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
sjl has joined #lisp
nullkl has joined #lisp
dbotton has joined #lisp
nullkl has quit [Ping timeout: 256 seconds]
Cymew has quit [Ping timeout: 240 seconds]
veera has joined #lisp
ldb has joined #lisp
<ldb> good evening
astronavt has quit [Quit: ...]
veera is now known as Veera
astronavt has joined #lisp
Veera53 has joined #lisp
Veera53 is now known as VeeBoi
jealousmonk_ has quit [Quit: Long live IRC!]
luni has quit [Quit: Connection closed]
jlarocco has joined #lisp
jealousmonk has joined #lisp
ikrabbe has joined #lisp
<ikrabbe> I'm creating my first bigger McClim Application and want a command to clear the interactor pane. How can I do that?
<beach> I think #clim is a better channel for that.
<beach> You should be able to delete the entire output history.
<beach> Try CLEAR-WINDOW.
<beach> "If window has an output history, that is cleared as well."
<beach> Section 29.4.4
<beach> First entry.
Veera has quit [Quit: WeeChat 2.8]
<beach> ikrabbe: Did you see my answer?
warweasle has joined #lisp
dhil has quit [Read error: Connection reset by peer]
<ikrabbe> hmm, yes thank you, I need to buy some catfood, than I will try ;)
<beach> OK, good luck.
<beach> Mainly with McCLIM.
long4mud has quit [Quit: WeeChat 3.0.1]
andreyorst has quit [Ping timeout: 272 seconds]
andreyorst has joined #lisp
wsinatra has quit [Quit: WeeChat 3.0.1]
kam1 has quit [Remote host closed the connection]
wsinatra has joined #lisp
kam1 has joined #lisp
wsinatra has quit [Client Quit]
_Posterdati_ has joined #lisp
dbotton has quit [Quit: This computer has gone to sleep]
Posterdati has quit [Ping timeout: 246 seconds]
Veera has joined #lisp
dbotton has joined #lisp
Veera has quit [Client Quit]
<dbotton> Does anyone have an example of asdf files used for project and subprojects? (Assuming this right thing for me)
<dbotton> I have the clog project and I want subdirectories with various tools I want to write
<dbotton> I guess the idea is can build or not build the tools etc
dbotton has quit [Quit: Leaving]
dbotton has joined #lisp
<jackdaniel> dbotton: say you have a main system "clog" in clog.asd -- asdf proposes, that you should create subsystems, i.e "clog/examples" in the same file
<jmercouris> note that THEY MUST use a slash
<jmercouris> if you try to use other characters, you're going to have a bad time
<jmercouris> dbotton: if you want an example, albeit a complex one, you can look at Nyxt's asd file
<dbotton> Thanks!
VeeBoi has quit [Quit: Connection closed]
<jmercouris> you are welcome
<jackdaniel> system names are of type string (not a keyword), you may consider changing that (however asdf gets out of its way to coerce them)
VeeBoi has joined #lisp
<jackdaniel> also, it is not that they must use slash - it is just if asd file with a system that name does not match the file name is not loaded, asdf won't know where to look for it
<jackdaniel> and if you load that file, it will gleefully complain with some warnings
<jmercouris> yeah, they "dont need" a slashh, but if you use another character... well, good luck to you
<jmercouris> first you must load xyz
<jmercouris> then xyz-salmon
<jmercouris> instead of being able to simply specify xyz/salmon
h4ck3r9696 has quit [Quit: Leaving.]
VeeBoi has quit [Client Quit]
<dbotton> Great I'll give it a whirl
dbotton has quit [Quit: This computer has gone to sleep]
<jmercouris> sleepety sleep mr computer :-)
dyelar has joined #lisp
wsinatra has joined #lisp
pillton has quit [Ping timeout: 264 seconds]
brandflake11 has joined #lisp
<brandflake11> Hey all, is it possible to bind a global variable within a defun with let, to make the global variable only defined a certain way locally within a function?
<jmercouris> yes
<jmercouris> however your sentence is very confusing, so can you please explain what it is you are trying to do
<jmercouris> (defparameter q 10) (defun printy () (let ((q 5)) (print q))) (printy)
<brandflake11> jmercouris: I'm sorry about that. I have a lisp defun I am working with, and I need some help with it. Would you take a look at it?
<beach> Put it on a paste site.
<brandflake11> OK!
<beach> For instance, plaster.tymoon.eu
<Josh_2> yes you can overwrite the value of a global variable only within a single let
<brandflake11> Here is a link: https://pastebin.com/Cv8Gm8Bf
<brandflake11> Okay, so this is using Common Music
<brandflake11> And what it does is generates midi output through jack
<brandflake11> The (events) function is what generates the midi output
<Josh_2> if you wrap the bottom (events .. ) in the let above it'll change the value of bpm
<Josh_2> (let ((bpm 200)) (events (one-note 22 bpm 1) *rts-out*)) instead
<beach> Josh_2: The code is badly indented.
<beach> Josh_2: It is already wrapped.
<Josh_2> oh right yes
<Josh_2> my mistake
<brandflake11> Josh_2: No problem, I was about to say it's the same! :)
<Josh_2> seems to me you are already doing what you asked?
ljavorsk has joined #lisp
<beach> brandflake11: So which is the "global variable" you want to change?
<brandflake11> It's the *tempo* variable. It doesn't seem to be changing the tempo of the midi out
<brandflake11> The wait at the bottom of the defun should be doing it, but for some reason it doesn't
kam1 has quit [Read error: Connection reset by peer]
pankajsg has joined #lisp
kam1 has joined #lisp
<beach> Oh, wait, are you using multiple threads?
<brandflake11> You can pass in a variable with let like I've done at the bottom near the events, right?
<brandflake11> beach: How do you know if you're using multiple threads?
<jmercouris> check to see if bordeaux threads is present
<jmercouris> it should be in the asd
<jmercouris> look for bt:make-thread
<beach> I think you had better know that if you want to understand what the code is doing.
<beach> jmercouris: Common Music may have been created before Bordeaux threads existed.
<brandflake11> How do I check in the asd? I'm sorry for the noob question
<jmercouris> I see
<brandflake11> beach: Well this is a modified Common Music to be used with Incudine
<brandflake11> So it might be using multiple threads
<beach> brandflake11: My guess is that it is in a different thread that the *tempo* variable is used, and you can't transmit a bound value across threads like that.
<brandflake11> Just checked the incudine website, http://incudine.sourceforge.net/, it uses bordeaux threads
nullkl has joined #lisp
<beach> Oh, good!
<brandflake11> beach: What can you do to keep it in the same thread?
<brandflake11> beach: I had no idea that this was a thing you have to watch out for!
<beach> You probably don't want to keep it in the same thread.
<beach> brandflake11: Are you just a user of this thing, or are you working on it?
<brandflake11> beach: I am just a user right now. I've been learning it for music composition
<brandflake11> beach: I'm learning lisp and common music at the same time
<beach> I see.
<brandflake11> beach: How could I reformat this to avoid the threads problem? Should I not use let at the top of defun with a global variable?
<beach> Well, one way would be to assign a new global value to *tempo*, but you started by saying that you don't want that.
<Josh_2> you might have to just (setf *tempo* ..)
<beach> Maybe (let ((save *tempo*)) (setf *tempo* 200) (one-note ...) (setf *tempo* save))
nullkl has quit [Ping timeout: 240 seconds]
<beach> Then you won't have to figure out how to initialize it in a new thread.
<beach> But it is a kludge.
varjagg has joined #lisp
<brandflake11> beach: I don't mind kludge :)
<beach> By not binding it with LET, you set the global value, so all threads should then see that new value.
<brandflake11> beach: Oh, maybe that's why *tempo* is global
<beach> Possibly.
<beach> I don't know enough about Common Music.
<Josh_2> You can write a macro like (with-new-tempo (<temp value>).. ) which does what beach showed automatically
<Josh_2> that way you don't have to worry about forgetting to reset the value
<beach> ... and include an UNWIND-PROTECT too.
<brandflake11> Josh_2: I haven't learned macro yet, but I need to. What does unwind-protect do? I've seen it used in the book I'm using
<brandflake11> to learn common music
<beach> It would set the value back even if there is an error.
<brandflake11> beach: Okay, thanks!
<beach> clhs unwind-protect
<brandflake11> Thank you everyone for your help
<beach> Pleasure. Good luck!
<brandflake11> beach: The solution you gave, I didn't think about that. You can just set it, and then reset it back! I should've thought of that!
<beach> Does it work?
<brandflake11> beach: Let me try it!
<brandflake11> beach: It works!
<beach> Great! That might be the best solution for now then, until you know more about threads.
<brandflake11> One more thing: I've been reading through Lisp 3rd edition to get more fundamentals in lisp. Is this a good book for learning the language itself?
ym has joined #lisp
<beach> Er, by what author(s)?
<brandflake11> Oh, by Partick Henry Winston and Berthold Klaus Paul Horn
<beach> minion: Please tell brandflake11 about PCL.
<minion> brandflake11: please look at PCL: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
<beach> brandflake11: I don't have the third edition, but PCL is more close to what we do these days.
<brandflake11> beach: Okay thanks! I learned some about loops from that book!
<ldb> what is dead-tree form
<brandflake11> ldb: I think it's a snarky term for paper
<beach> Oh, it's from 1989. Then it is way too old.
<brandflake11> beach: I guess the language has changed a lot since then?
<Josh_2> brandflake11: https://plaster.tymoon.eu/view/2306#2306 here is an example of a macro you could use
<beach> The ANSI standard is from 1994, so books should be newer than that.
<brandflake11> beach: Oh, that makes sense
<beach> brandflake11: Yes, CLOS was not included before that.
<brandflake11> beach: Oh man, I'm so glad I asked then
<beach> PCL is available online, so I would use that instead.
<brandflake11> beach: That's nice. I can read it with emacs then!
bilegeek has joined #lisp
<Josh_2> oh right minion :P
<beach> minion: Thanks!
<minion> np
<brandflake11> Josh_2: Thanks for the example. Although, there is a lot there that I don't grasp yet, I'll definitely save it and take a look at it later when I learn about macros
<jmercouris> minion: thanks
<minion> no problem
<brandflake11> So, one problem that I've uncovered with this example that I gave you all, is the bpm argument in the defun doesn't matter.
<beach> Or you can move the code to set *tempo* inside one-note.
<brandflake11> beach: I was just trying that, but I get an error
<brandflake11> ; Evaluation aborted on #<unbound-variable bpm {1004DF21B3}>.
surabax has quit [Quit: Leaving]
<brandflake11> beach: Oh actually nvm, that was a mistake from earlier
<brandflake11> But, it seems that it doesn't output any midi now
<beach> (defun one-note (root bpm amount) (with-new-tempo (...) (output ...)...))
h4ck3r9696 has joined #lisp
<brandflake11> Here is my new defun https://pastebin.com/EJ2zYYP5
<brandflake11> Is this also the same threading problem?
<beach> If the previous code worked, this code ought to work as well.
ldb has quit [Remote host closed the connection]
<brandflake11> beach: It's interesting, because it even prints the value of *tempo* when I run the (event), but no output. Maybe I don't know enough about Common Music. The (process) function does have its own scheduler, so maybe that's the reason it doesn't work.
masteredanxiety has joined #lisp
<beach> I am afraid I don't know.
<brandflake11> beach: No problem! I'll keep digging!
<brandflake11> beach: Thanks again!
<beach> Sure.
<easye> Is there a semi-portable ADVICE facility for CL? I can't seem to find one easily...
<beach> Remind me what it does!
<beach> Isn't that the one used as a poor substitute for generic functions?
masteredanxiety has quit [Remote host closed the connection]
dbotton has joined #lisp
<beach> Never mind. I'll look it up.
rgherdt has quit [Quit: Leaving]
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #lisp
<warweasle> I forgot how much I love lisp. It's so much fun to solve problems with it.
<contrapunctus> warweasle: weren't you the one who made something with Lisp and has a demo of it on YouTube, a long time ago? 🤔
<warweasle> contrapunctus: I assume I am *one* of those people. I tried to write a game engine in lisp called CLinch.
<contrapunctus> Ah nice ^^
<warweasle> I got tired of working alone so I moved to unreal engine. But I've been taking a break because reasons.
luni has joined #lisp
<Josh_2> CL on unreal :P
nullkl has joined #lisp
galex-713 has quit [Ping timeout: 272 seconds]
masanx has joined #lisp
<svetlyak40wt> Josh_2: this engine should be called UnreaCL
<Josh_2> yes!
Ailrk is now known as ailrk
<warweasle> svetlyak40wt: I'm partial to CLinch.
madage has quit [Ping timeout: 268 seconds]
madage has joined #lisp
madage has quit [Remote host closed the connection]
galex-713 has joined #lisp
madage has joined #lisp
svetlyak40wt has quit [Remote host closed the connection]
karlosz has joined #lisp
masanx has quit [Quit: ERC (IRC client for Emacs 28.0.50)]
nij has joined #lisp
<nij> A quine is a list that evaluates to itself, e.g. http://www.nyx.net/~gthompso/quine.htm
<nij> Is there a list L = (lambda (meal) .. (:in x1 x2 .. xn) ..) such that (L y) evaluates to (lambda (meal) .. (:in x1 x2 .. xn y) ..)
<nij> ?
brandflake11 has left #lisp ["ERC (IRC client for Emacs 27.1)"]
rogersm has joined #lisp
<Bike> if you're restricting it to only lambda expressions, maybe not
<Bike> but you can certainly write modified quines of that kind if you really want to
<nij> Bike: I've thought about it and brain's gonna bleed.
<nij> The quine was already clever for me.
<nij> Bike: if not restricted with lambda expressions, what'd be a strategy?
<Bike> what i mean is that a lisp quine would be, like, ((lambda (x) `(,x ',x)) '(lambda (x) `(,x ',x))) for example. the argument you pass is part of it
_paul0 has quit [Ping timeout: 260 seconds]
<nij> But can you turn the quine into a "slurping quine"?
<nij> It slurps the argument insides of it, and can keep slurping.
<Bike> probably yeah
<Bike> not really motivated to actually do it, though
nullkl has quit [Ping timeout: 272 seconds]
kam1 has quit [Remote host closed the connection]
kam1 has joined #lisp
aartaka has joined #lisp
ym has quit [Ping timeout: 260 seconds]
aartaka_d has quit [Ping timeout: 246 seconds]
<easye> beach: re: Remind me what it does ... poor substitute for generic functions: yes, for debugging something that I want to hoist the DEFUNs. I can do this at compile time.
nullkl has joined #lisp
<mfiano> #1=(write '#1# :circle t)
shka_ has quit [Quit: Konversation terminated!]
kam1 has quit [Remote host closed the connection]
nullkl has quit [Ping timeout: 256 seconds]
kam1 has joined #lisp
kam1 has quit [Remote host closed the connection]
kam1 has joined #lisp
shka_ has joined #lisp
rozengla` has joined #lisp
rozenglass has quit [Ping timeout: 246 seconds]
h4ck3r9696 has quit [Quit: Leaving.]
CrazyPython has joined #lisp
sveit has joined #lisp
Sauvin has quit [Remote host closed the connection]
simplegauss has joined #lisp
galex-713 has quit [Ping timeout: 265 seconds]
kam1 has quit [Remote host closed the connection]
CrazyPython has quit [Remote host closed the connection]
kam1 has joined #lisp
svetlyak40wt has joined #lisp
frodef has joined #lisp
h4ck3r9696 has joined #lisp
<attila_lendvai> can someone point me to the place in SBCL's sources, or anywhere else, like a blog post, where special variable lookup and asm representation is written up?
<attila_lendvai> i'm having a lot of fun working on https://github.com/attila-lendvai/maru but time has come to consider adding special variables
aartaka has quit [Ping timeout: 256 seconds]
Elephant454 has joined #lisp
Elephant454 has quit [Remote host closed the connection]
VincentVega has joined #lisp
warweasle has left #lisp ["Killed buffer"]
akoana has joined #lisp
rogersm has quit [Quit: Leaving...]
anticrisis has joined #lisp
X-Scale` has joined #lisp
<Josh_2> crazy stuff
<Josh_2> but maybe #sbcl is the place to ask
<VincentVega> How do I match end of the list w/ trivia? https://pastebin.com/EGSRUXXG
X-Scale has quit [Ping timeout: 260 seconds]
X-Scale` is now known as X-Scale
ljavorsk has quit [Ping timeout: 240 seconds]
svetlyak40wt has quit [Remote host closed the connection]
svetlyak40wt has joined #lisp
<Krystof> attila_lendvai: Chapter 9 of the SBCL internals manual, and src/compiler/<backend>/cell.lisp
<attila_lendvai> Krystof, thank you!
<Krystof> (it's a short chapter: don't thank me too much :))
kam1 has quit [Ping timeout: 256 seconds]
svetlyak40wt has quit [Ping timeout: 265 seconds]
sz0 has joined #lisp
galex-713 has joined #lisp
epony has quit [Remote host closed the connection]
dbotton has quit [Quit: Leaving]
svetlyak40wt has joined #lisp
nij has left #lisp ["ERC (IRC client for Emacs 27.1)"]
<heisig> VincentVega: I don't think such a thing can be expressed in the pattern matching grammar of Trivia. Your best chance is to use a (list* ...) pattern and some custom code.
<heisig> A useful feature for such custom processing is that you can call (trivia.fail:fail) to give up executing this clause and to proceed to the next one.
epony has joined #lisp
long4mud has joined #lisp
<VincentVega> heisig: thanks! I am new to the package, so this clears up my doubt about maybe misunderstanding it. Good thing it can be extended, so should be no problem.
Aurora_v_kosmose has quit [Remote host closed the connection]
zacts has joined #lisp
Aurora_v_kosmose has joined #lisp
h4ck3r9696 has quit [Quit: Leaving.]
jonatack_ has joined #lisp
jonatack has quit [Ping timeout: 260 seconds]
fosred has joined #lisp
euandreh has quit [Ping timeout: 246 seconds]
euandreh has joined #lisp
jonatack_ has quit [Read error: Connection reset by peer]
shka_ has quit [Ping timeout: 260 seconds]
fosred has quit [Quit: Leaving]
svetlyak40wt has quit [Remote host closed the connection]
svetlyak40wt has joined #lisp
kpoeck has joined #lisp
svetlyak40wt has quit [Ping timeout: 246 seconds]
narimiran has quit [Ping timeout: 265 seconds]
cage_ has quit [Quit: Leaving]
svetlyak40wt has joined #lisp
theothornhill has joined #lisp
wsinatra has quit [Ping timeout: 264 seconds]
svetlyak40wt has quit [Ping timeout: 240 seconds]
ex_nihilo has quit [Quit: Leaving]
theothornhill has quit [Ping timeout: 246 seconds]
zooey has quit [Quit: quit]
zooey has joined #lisp
theothornhill has joined #lisp
theBlackDragon has quit [Ping timeout: 246 seconds]
heisig has quit [Quit: Leaving]
kpoeck has quit [Quit: Connection closed]
theBlackDragon has joined #lisp
theothornhill has quit [Remote host closed the connection]
svetlyak40wt has joined #lisp
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
contrapunctus has quit [Ping timeout: 256 seconds]
quazimodo has quit [Ping timeout: 256 seconds]
theothornhill has joined #lisp
theothor` has joined #lisp
ilshad has joined #lisp
theothornhill has quit [Remote host closed the connection]
contrapunctus has joined #lisp
<ikrabbe> beach: Hmm, the function is called window-clear and does what I want, but actually it does a bit more, by also clearing and redrawing other panes. Anyway, for now I can work with it.
<ikrabbe> I wonder if I can simply replace the interactor pane with a fresh one.
<ikrabbe> but I should move to #clim with these questions...
theothor` has quit [Ping timeout: 260 seconds]
devon has joined #lisp
pankajsg has quit [Ping timeout: 256 seconds]
pve has quit [Quit: leaving]
dtman34 has quit [Ping timeout: 264 seconds]
quazimodo has joined #lisp
paul0 has joined #lisp
luni has quit [Quit: Connection closed]
dtman34 has joined #lisp
<Josh_2> converted like 1200 SLOC of Python to CL, got another 800 or so to go, and then all the tests
<Josh_2> what a right pita
<Josh_2> doesn't help It's all FFI so I have to think, think again and then think one more time to make sure I'm not messing up
bendersteed has joined #lisp
bendersteed has quit [Remote host closed the connection]
bendersteed has joined #lisp
troydm has quit [Ping timeout: 265 seconds]
sjl has quit [Ping timeout: 256 seconds]
VincentVega has quit [Quit: Connection closed]
random-nick has quit [Ping timeout: 265 seconds]
saturn2 has quit [Quit: WeeChat 1.0.1]
clone_of_saturn has joined #lisp
clone_of_saturn is now known as saturn2
bmansurov_ has quit [Quit: 👋]
bmansurov has joined #lisp
bendersteed has quit [Quit: bye folks]
theothor` has joined #lisp
hiroaki has quit [Ping timeout: 246 seconds]
theothor` has quit [Ping timeout: 264 seconds]
<markasoftware> it's fine for me to subclass `function`, right? If i wanted to make a generic function-like system for example
<markasoftware> though i'm not sure how i would instantiate it...
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
varjagg has quit [Ping timeout: 260 seconds]
<scymtym> markasoftware: you can use the (:metaclass funcallable-standard-class) option for your class, make instances as always using MAKE-INSTANCE and SET-FUNCALLABLE-INSTANCE-FUNCTION to install the "behavior" of those instances
dyelar has quit [Quit: Leaving.]
thmprover has joined #lisp
mrcom has joined #lisp
<ozzloy> i'm using read-delimited-list and keep forgetting to end my input with ~