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.
<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>
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
<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
<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
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
<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
<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>
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?
<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
<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>
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?
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 ~