Xach changed the topic of #commonlisp to: Common Lisp, the #1=(programmable . #1#) programming language | Wiki: <https://www.cliki.net> | IRC Logs: <https://irclog.tymoon.eu/libera/%23commonlisp> | Cookbook: <https://lispcookbook.github.io/cl-cookbook>
jeosol has quit [Quit: Connection closed]
cosimone has quit [Ping timeout: 256 seconds]
<pjb> jmercouris: it's just that some packages don't use CL. They may use nothing, or use something else.
rgherdt has quit [Ping timeout: 240 seconds]
igemnace has joined #commonlisp
Bike has quit [Quit: Lost terminal]
thomaslewis has joined #commonlisp
Everything has joined #commonlisp
s-liao has joined #commonlisp
biog has joined #commonlisp
asen has joined #commonlisp
random-nick has quit [Ping timeout: 250 seconds]
azimut has joined #commonlisp
Alfr has quit [Quit: Leaving]
s-liao has quit [Quit: Ping timeout (120 seconds)]
s-liao has joined #commonlisp
Alfr has joined #commonlisp
rotateq has quit [Quit: ERC (IRC client for Emacs 27.2)]
eddof13 has joined #commonlisp
biog has quit [Quit: ZZZzzz…]
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
nij- has quit [Read error: Connection reset by peer]
jpl01 has quit [Remote host closed the connection]
jstoddard has quit [Quit: ERC (IRC client for Emacs 27.1)]
edmrk[m] has quit [Ping timeout: 240 seconds]
dieggsy has quit [Ping timeout: 240 seconds]
yitzi has quit [Ping timeout: 240 seconds]
shinohai[m] has quit [Ping timeout: 240 seconds]
etimmons has quit [Ping timeout: 240 seconds]
linjian has quit [Ping timeout: 240 seconds]
cgenie[m] has quit [Ping timeout: 240 seconds]
rudi has quit [Ping timeout: 240 seconds]
yitzi has joined #commonlisp
shinohai[m] has joined #commonlisp
taiju has quit [Ping timeout: 240 seconds]
edmrk[m] has joined #commonlisp
dieggsy has joined #commonlisp
cgenie[m] has joined #commonlisp
rudi has joined #commonlisp
linjian has joined #commonlisp
etimmons has joined #commonlisp
aeth has quit [Ping timeout: 240 seconds]
aeth has joined #commonlisp
Inline has quit [Remote host closed the connection]
hobo has quit [Ping timeout: 250 seconds]
hobo_ has joined #commonlisp
jstoddard has joined #commonlisp
nij- has joined #commonlisp
Oladon has quit [Quit: Leaving.]
<beach> Good morning everyone!
igemnace has quit [Remote host closed the connection]
semz has quit [Ping timeout: 240 seconds]
pranavats has left #commonlisp [Error from remote client]
Everything has quit [Quit: leaving]
tyson2 has quit [Remote host closed the connection]
Inline has joined #commonlisp
waleee has quit [Ping timeout: 240 seconds]
semz has joined #commonlisp
igemnace has joined #commonlisp
lisp123 has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
s-liao has joined #commonlisp
Oladon has joined #commonlisp
<lisp123> Are there any libraries for working with "versioned" hash tables? I.e. being able to retrieve a version of a given hash table at a particular point in time / point in the program cycle. I have an idea on how to do this, but just checking in case it already exists (preliminary online search suggests no)
nij- has left #commonlisp [#commonlisp]
<White_Flame> the term would be "persistent" hash table, usually a pure functional data structure
<White_Flame> I implemented my own from okasaki's book, not sure about libs, but those are the terms to look for
<White_Flame> either that, or logging adds/removes/replaces
<lisp123> White_Flame: Thanks! I will have a look at that book. I was thinking of logging adds/removes/replaces within the hash values itself (e.g. keep a list of values, each value being a cons cell with the car reflecting the version number)
<lisp123> https://common-lisp.net/project/fset/ seems to be the most popular library, but will need to review how it works
hexology has quit [Quit: hex on you ...]
lisp123 has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
<Alfr> lisp123, cl-hamt may also be interesting.
aartaka has joined #commonlisp
shka has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
elderK has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
miique has quit [Read error: Connection reset by peer]
jealousmonk has quit [Quit: ERC (IRC client for Emacs 27.1)]
aartaka has quit [Ping timeout: 240 seconds]
aartaka has joined #commonlisp
lisp123 has joined #commonlisp
moon-child has joined #commonlisp
<lisp123> Alfr: Thanks for that, it is very interesting as background reading.
igemnace has quit [Remote host closed the connection]
taiju has joined #commonlisp
Jing has joined #commonlisp
igemnace has joined #commonlisp
hexology has joined #commonlisp
<jmercouris> lisp123: what you are describing is frequently a strategy for hash collisions
<beach> minion: memo for nij-: I was asleep when you tried to contact me by private message. I thought it better to answer you in #climacs so as to involve others that might be interested. You can check the logs on tymoon.eu for the #climacs channel to catch up.
<minion> Remembered. I'll tell nij- when he/she/it next speaks.
<lisp123> jmercouris: Not really in this case, its like a normal hash table but instead of storing one copy of the datum, store it as a list with versioning appended
<lisp123> Seems simple enough and quite useful, I can send you a copy later if you want to use it
Jing has quit [Remote host closed the connection]
Jing has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
Jing has quit [Remote host closed the connection]
Jing has joined #commonlisp
nij- has joined #commonlisp
<nij-> Has anyone tried to write an elisp->CL compiler in CL before? It seems to be a taunting project, but is it really that hard? What are some known obstacles?
parjanya has joined #commonlisp
<minion> nij-, memo from beach: I was asleep when you tried to contact me by private message. I thought it better to answer you in #climacs so as to involve others that might be interested. You can check the logs on tymoon.eu for the #climacs channel to catch up.
rgherdt has joined #commonlisp
<nij-> Oh this message is exactly what I'd like to see. /join #climacs
Oladon has quit [Quit: Leaving.]
rotateq has joined #commonlisp
pve has joined #commonlisp
s-liao has joined #commonlisp
Algernon69 has joined #commonlisp
<phoe> nij-: I think the language itself is simple enough, it's reimplementing the emacs APIs and intrinsics is the troublesome aspect
ns12 has quit [Ping timeout: 240 seconds]
<nij-> What are its APIs and intrinsics?
<phoe> everything that you cannot implement in elisp itself
<nij-> Except for the elisp evaluator written in C, and some data type written in C for performance's sake, are there other APIs and intrinsics?
<phoe> also the buffer logic and lots of character handling and text editing stuff
lisp123 has quit [Remote host closed the connection]
treflip has joined #commonlisp
<nij-> Naive guess (is it true)? - With CLOS, it will be much easier to implement those than C.
<phoe> depends on your definition of "easier"
<phoe> easier, yes, because it's possible and feasible to write high-performance CL nowadays
<phoe> easier, no, because it would have already been done if it was easy
<phoe> it's a hard question to answer definitively
<moon-child> phoe: I would say, rather, everything that _is_ not implemented in elisp itself
<phoe> moon-child: uh, isn't that what I said?
<moon-child> 'everything that you cannot implement in elisp itself'
<phoe> oh, I see what you mean
<phoe> yes, correct
<phoe> closer to reality :D
<moon-child> :)
<madnificent> With gccemacs, the gain would also be lower than what it used to be a few years ago.
<moon-child> I think the idea is to be able to have an editor programmable in cl, not to improve performance
<phoe> then just keep on hacking at climacs
<moon-child> then you lose compat with the existing base of elisp code
<madnificent> For Emacs, there's a common lisp library that gives you some of the abstractions. I would very much appload Emacs on a Common Lisp backend but I do think it's quite the endeavor.
<madnificent> You could estimate the amount of work by looking at what is defined in the C code. That's roughly the space that would need a new implementation.
<moon-child> that lets you write some cl-ish code in emacs, but it is not sufficient to run any of the existing base of code written in cl
<madnificent> moon-child: yeah, I fully agree
<phoe> moon-child: then the idea is not to have an editor programmable in CL, it is to have emacs programmable in CL
<madnificent> moon-child: Perhaps also see if you can pick up where others have left off. I have certainly seen this topic pop up multiple times over the years.
<moon-child> madnificent: this is nij-'s project, not mine
* madnificent didn't even know those people were still around o7
<madnificent> moon-child: Perhaps it could be an option to build an FFI bridge to Common Lisp? Maybe also not what you're looking for but it may be less work and could have more buy-in with the Emacs crowd.
<nij-> moon-child: Too early to say that it's my project. I'm still speculating.
aartaka has quit [Ping timeout: 240 seconds]
aartaka has joined #commonlisp
<moon-child> nij-: well, it is more yours than mine at any rate :)
cage has joined #commonlisp
<moon-child> I will live too few years to spend them writing implementations of emacs, elisp, or common lisp
taiju has quit [Remote host closed the connection]
taiju has joined #commonlisp
<nij-> madnificent: there are around 450k lines of *.c/*.h codes. Dang.
rotateq has quit [Quit: ERC (IRC client for Emacs 27.2)]
<mfiano> So only about 4500 converted to lisp :P
<madnificent> You still have to read them, mfiano :P
<madnificent> Emacs is huge
<White_Flame> eight megabytes and constantly swapping
<White_Flame> but yeah, porting from C to CL generally ends up with rearchitecting it anyway
<madnificent> White_Flame: I'm running 8000 emacs instances to increase my personal productivity now and it is indeed swapping. How terrible is this XD
<madnificent> White_Flame: which would bring us at climacs again ^_^
<nij-> mfiano: "converted to lisp"..? What do you mean?
<madnificent> However, what if climacs could evaluate Elisp code minus the large base library. Could it be that we can gradually extend it?
aartaka has quit [Ping timeout: 240 seconds]
<nij-> Yeah, I think that's nice. Perhaps many lines of C codes are not necessary for the goal - for climacs to be able to evaluate elisp.
<madnificent> It could become infuriating to open your org-agenda and get something like "function swap-bytes is not converted to elisp-climacs yet. docstring is "thingemetac" please implement. But it could at least give us steps forward.
kotshie_ has quit [Ping timeout: 240 seconds]
<phoe> White_Flame: and rearchitecting it means that you are no longer compatible with emacs abstractions
<phoe> which also means that you end up being incompatible with emacs APIs that elisp code uses
aartaka has joined #commonlisp
<madnificent> phoe: I went from there to implementing things in Climacs. Perhaps I should added steps in between.
karlosz has quit [Quit: karlosz]
ns12 has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life has joined #commonlisp
igemnace has quit [Remote host closed the connection]
<madnificent> Fun annecdote: I converted some Elixir code to Common Lisp code to wrap my head around a different parsing strategy. The new code is 100000 faster. Still afraid of GC further down the road, but this clearly shows that a better algorithm greatly overshadows the speed of the language itself (I hope, at least CL made this more feasible for my tiny brain)
<phoe> elixir is a managed language too though
<phoe> all of BEAM languages are garbage-collected, even if their GC techniques are different
<madnificent> Yes, but the GC is not that awesome. Much of how GC is handled is by short-lived processes (in their nomenclature) and throwing away memory of the short-lived processes when it's disbanded. Some of it is by scoping the GC to that process. I don't think we have such a thing in Common Lisp.
<moon-child> abcl has good gc ... but crap overall performance :)
<phoe> that technique is impossible to do in Lisp in the general case because of omnipresent mutability
<moon-child> (actually, I hear allegro has a pretty decent gc, maybe)
<moon-child> phoe: barriers go brr
<madnificent> It is also far worse because it is a 'pure' language and because sending data between threads requires serialization/deserialization. For some of the query expansions we process, that's a bit of an issue.
<madnificent> We can declare variables dynamic extent in lisp and that might maybe give us something similar. But I'm not sure this will be a problem here. I just don't know. And I don't know of good ways to find out either.
<madnificent> The profiles will be wildly different as the pure Elixir runtime creates a ton of objects to GC when mutating parts of them. That will not be the case in CL. But on the other hand, it has it easier on the GC because it can scope. So ¯\_(ツ)_/¯
<moon-child> dynamic extent is different. That lets you do stack allocation, but does nothing for objects with non-lifo lifetimes
<madnificent> I know. I might be able to alleviate pressure that way. But it's not something formed in my head yet.
igemnace has joined #commonlisp
cosimone has joined #commonlisp
s-liao has quit [Quit: Client closed]
biog has joined #commonlisp
elderK has quit [Quit: Connection closed for inactivity]
s-liao has joined #commonlisp
aartaka has quit [Ping timeout: 268 seconds]
aartaka has joined #commonlisp
cosimone has quit [Quit: ERC (IRC client for Emacs 27.1)]
Algernon69 has quit [Ping timeout: 240 seconds]
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 240 seconds]
biog has quit [Quit: ZZZzzz…]
McParen has joined #commonlisp
<theothornhill> What is a classoid in the context of sbcl? I see it referenced many places, but internet only spits out cryptocurrency nonsense as the answer :)
biog has joined #commonlisp
nature has joined #commonlisp
<moon-child> theothornhill: may have better luck in #sbcl
<theothornhill> Thanks :)
theothornhill has quit [Remote host closed the connection]
rotateq has joined #commonlisp
theothornhill has joined #commonlisp
tyson2 has joined #commonlisp
random-nick has joined #commonlisp
<theothornhill> In the AMOP they create a couple of functions on the form: (defun foo (x) (pprint x) (values)). Why do they supply the last (values), when 'pprint itself clearly returns no values already? It seems (defun foo (x) (pprint x)) would yield exactly the same behavior?
<Shinmera> pprint returns the value passed. They want to be explicit that their function returns nothing at all and is only used for side-effect.
<Shinmera> It is a style that I personally am not fond of, but clearly some people are.
<theothornhill> The spec is clear in that pprint should return no values, as far as I can tell, isn't it?
<pjb> pprint => <no value> says clhs
<theothornhill> "pprint object &optional output-stream => <no values>"
<Shinmera> Oh, whoops I misread. Indeed you are right.
s-liao has quit [Quit: Client closed]
<Shinmera> No idea then! :)
igemnace has quit [Ping timeout: 268 seconds]
<pjb> theothornhill: it's easier to write (values) than to check the hyperspec.
<theothornhill> Hah!
<pjb> Notably when you don't have it on-line.
<Shinmera> AMOP was released 1991, before Ansi CL was completed in 1994.
<theothornhill> Well, it's a strange oversight, considering that the code in general is very well made, _and_ they talk about that idiom in particular
<Shinmera> it's possible that part was not yet seen as ratified.
<theothornhill> Yeah, that's my guess as well
<jackdaniel> it could be some sort of an easter egg or a joke that ordinary minds do not comprehend ,)
<MichaelRaskin> Strictly speaking, it is not only _that_ part that needs to be ratified for the answer to be definite
<jackdaniel> (of course it was not, but hey, it could be!)
<MichaelRaskin> There is also a question whether _adding_ extra return values after all the standard ones is allowed as an implementation-defined extension
<theothornhill> I'm going for the easter egg explanation
<theothornhill> MichaelRaskin: what do you mean?
<MichaelRaskin> 1.6 Language extensions
<phoe> MichaelRaskin: likely not because MULTIPLE-VALUE-CALL is going to break
<theothornhill> MichaelRaskin: Not sure I understand what you mean? They don't redefine pprint, as far as I can tell
dra has joined #commonlisp
<MichaelRaskin> The question is how early it was 100% clear that implementing pprint with an output value would be non-conforming.
<theothornhill> Right
<phoe> ooh, like that
<phoe> ;; probably 1994, because earlier there was no ANSI CL standard to conform to :D
<MichaelRaskin> Well, conditional on the standard being eventually published by the existing working group
<MichaelRaskin> (and without process resets, I guess)
<pjb> Where is it written that extensions can add values?
<pjb> I can't find it again.
<MichaelRaskin> It is written they cannot
<MichaelRaskin> 1.6
<phoe> clhs 1.6
<pjb> thanks.
<pjb> "An implementation must return exactly the number of return values specified by this standard unless the standard specifically indicates otherwise."
<pjb> So I'd say that pprint cannot be extended with additionnal values.
igemnace has joined #commonlisp
<MichaelRaskin> Yes, the question is, whether it was settled at the time AMOP was written
<pjb> The relevant issue iis dated August 1989.
<pjb> But we don't know if PPRINT was specified by that date.
<theothornhill> It is mentioned in cltl1
<theothornhill> should be page 383, but I don't have a copy yet hehe
<edgar-rft> I think it's a test to find out how many people really have read the code in AMOP.
<theothornhill> Feels like i'm losing
<moon-child> moreover, books are generally written before they are published
s-liao has joined #commonlisp
gaqwas has joined #commonlisp
Kyuvi has joined #commonlisp
biog has quit [Quit: ZZZzzz…]
amb007 has quit [Ping timeout: 250 seconds]
amb007 has joined #commonlisp
Algernon69 has joined #commonlisp
Algernon69 has quit [Ping timeout: 260 seconds]
NetNoodler has joined #commonlisp
Algernon69 has joined #commonlisp
Algernon91 has joined #commonlisp
lisp123 has joined #commonlisp
Algernon69 has quit [Ping timeout: 252 seconds]
lisp123 has quit [Ping timeout: 256 seconds]
Kyuvi has quit [Quit: Client closed]
NetNoodler has quit [Quit: Leaving]
dra has quit [Quit: Leaving]
Algernon91 has quit [Ping timeout: 240 seconds]
s-liao has quit [Quit: Client closed]
nij- has left #commonlisp [Using Circe, the loveliest of all IRC clients]
Algernon91 has joined #commonlisp
lisp123 has joined #commonlisp
psf has quit [Ping timeout: 256 seconds]
psf has joined #commonlisp
<phoe> Xach: will you mind if I add a keyword argument to WITH-CANVAS to return the ZPNG image that is created?
<phoe> (or, worse, make it the default? I don't think anyone realistically depends on the return value of WITH-CANVAS unless I miss something big)
biog has joined #commonlisp
<phoe> the use case is to be able to use the generated canvas data without saving the PNG to disk and loading it back up
<phoe> and another optimization that immediately follows up is using a custom function for creating the backing ub8 vector - e.g. a for using a static vector
attila_lendvai has joined #commonlisp
Algernon91 has quit [Read error: Connection reset by peer]
Algernon91 has joined #commonlisp
rain3 has joined #commonlisp
notzmv has quit [Read error: Connection reset by peer]
Algernon91 has quit [Ping timeout: 240 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
tyson2 has joined #commonlisp
kevingal has joined #commonlisp
Algernon91 has joined #commonlisp
asen has quit [Quit: Leaving]
Algernon666 has joined #commonlisp
notzmv has joined #commonlisp
<lisp123> When using HANDLER-CASE, on a largish form, should I (i) put that form into a local function, (2) put the handler case in a new wrapper function or (3) leave the form within HANDLER-CASE?
nij- has joined #commonlisp
Algernon91 has quit [Ping timeout: 240 seconds]
_73 has joined #commonlisp
<_death> there are more alternatives, like putting the form into a global function, or writing a macro expanding into the handler-case..
<lisp123> _death: Yes, by (2) I meant putting the form into a global function and the handler-case around it. Do you have a particular preference for one of these?
<semz> I don't think a large form inside a handler-case specifically would bother me. Of course putting it into a local function might be worth it for readability in general.
<lisp123> I feel like (2) is cleanest, but I would have to come with a new name for the 'handled' version
<_death> it depends on the case, but often I'd go with that.. https://adeht.org/usenet-gems/one-function.txt
<_73> is there a function that will give me the place of a hash value that I can later change with SETF. I want to be able to say something like `(let ((place (place-of (gethash "foo" my-hash)))) (setf place 12))`
<_death> (by that, I mean trying to keep function bodies small.. if the form is large, maybe it should also be split)
<lisp123> _death: Thanks, makes sense
<phoe> _73: (lambda (value) (setf (gethash hash-table key) value))
<phoe> close over HASH-TABLE and KEY
<lisp123> Nice website, I wonder if there is an index page for all usenet-gems
<_death> lisp123: the main page currently lists the usenet gems.. every year I say that I need to update it, so here's one for 2020+2
<_73> phoe: I see. thanks
<lisp123> semz: Yeah, its just that I'm erring on more conditions than less (more descriptive error messages as a result), so that already makes the form large
<lisp123> _death: AH thanks, I was looking at the wrong place
<semz> lisp123, maybe it would help to introduce a supertype for your conditions and play with the :report option.
<semz> But this is hard to say without seeing the code.
<lisp123> semz: Not a bad idea, thanks for that
gaqwas has quit [Remote host closed the connection]
<Xach> phoe: i don't think it should be a return value.
waleee has joined #commonlisp
<Xach> phoe: i think there should be a function to access the value in the context
<phoe> Xach: OK, that works too - something like this? (with-canvas (...) ... (return-png)) ;=> <#ZPNG:PNG ...>
<Xach> phoe: more like ZPNG-OBJECT
<phoe> sure, so, (with-canvas (...) (zpng-object)) ;=> #<ZPNG:PNG ...>
<Xach> aye
citizenajb has joined #commonlisp
<phoe> OK, I'll do it that way - how about a custom allocator? I have a patch ready that does (with-canvas (... :allocator allocator) ...) where allocator is e.g. (lambda (x) (make-static-vector x :element-type '(unsigned-byte 8) :initial-element 0))
<Xach> hmm
<phoe> where X is computed on the vecto side, since it has the number of channels and image dimensions
<phoe> and the standard allocator is just a wrapped make-array, like in current code
<Xach> i'd prefer :image-data-allocator I think
<Xach> but that sounds fine otherwise
<phoe> okie, I'll modify the keyword name
Oladon has joined #commonlisp
biog has quit [Quit: ZZZzzz…]
jealousmonk has joined #commonlisp
nij- has quit [Quit: Using Circe, the loveliest of all IRC clients]
citizenajb has quit [Remote host closed the connection]
<madnificent> Are there examples of pretty printing nested objects? I basically want to keep how a struct is printed, but I want nested lists to be printed with less indentation.
attila_lendvai has quit [Ping timeout: 268 seconds]
miique has joined #commonlisp
<lisp123> I always struggled with that
<engblom_> Imagine me having a function called foo that does some stuff and then returns some value. As a side effect it would output some logging with format. Many concurrent sessions are calling that function. Is it possibible to redefine standard out, so each session knows what the output was for that session?
McParen has left #commonlisp [#commonlisp]
<phoe> just rebind *STANDARD-OUTPUT* in each thread
<engblom_> phoe: This was something I was thinking about, but is *STANDARD-OUTPUT* just a normal variable? Or how do I do it practically?
<phoe> it's a standard dynamic variable
<phoe> (let ((*standard-output* ...)) ...) is enough
<engblom_> Ok, thanks! This will simplify my program a lot!
<phoe> do you know how to deal with dynamic variables in general?
<phoe> such things can simplify programs a lot in the general case
<_death> madnificent: there's no standard interface to customize printing of structures in general, other than global pprint-related variables.. there's also no standard interface to introspect structure instances.. if you want to pprint a particular structure type it's possible to do that in standard CL though
<madnificent> lisp123: It's such a trivial thing but it could make debugging so much easier.
<madnificent> _death: I'm looking for examples of print-object, possibly on how it's implemented for defstruct
<_death> madnificent: for an example of pprinting nested objects, maybe check out Waters's article at https://3e8.org/pub/scheme/doc/lisp-pointers/v5i2/p27-waters.pdf
<lisp123> madnificent: I don't think its that easy because you don't know the length of your objects + the width of your screen :( I feel your pain though, I looked at this before
<madnificent> _death: thank you!
<madnificent> lisp123: I can agree, though the current pretty printer also makes some fairly random assumptions. I'm okay with optimizing for my silly cases here. Thatos why it was made extensible, I think.
<phoe> madnificent: I know a person who knows the depths of the pretty printer, I've let them know on Discord you need help
<madnificent> phoe: <3
<lisp123> madnificent: True, if you make some assumptions, then within those assumptions, it could work out okay.
<lisp123> madnificent: You can also consider a McCLIM solution - this is a place where interactivity & layering through a GUI can help out a lot
<_death> madnificent: I also remember http://norvig.com/ltd/doc/ltd.html used the pprinter
<madnificent> Perhaps I should up my format-fu to make this land they way I want to.
<madnificent> Was hoping to find something in a tiny helper I made for tracing lambda functions (https://github.com/madnificent/cl-traceable) but no dice.
<madnificent> _death: Do you have a copy of reference [5] in that paper, by accident? It is Waters R.C., "Pretty Printing',' in Common Lisp: the Language, Second Edition, 748-769, Steele G.L.Jr., Digital Press, Burlington MA, 1990.
<lisp123> Hmmm I wonder if compiler do some sort of automatic memoization (see what objects are reference by a function, and if they don't change, use the old value of the function) - crazy idea, but I swear one of the forms I just ran was faster the second time
Algernon91 has joined #commonlisp
<madnificent> Thanks again :D
<madnificent> lisp123: caches can also be warmed up and cpu clockspeed can still be high. These things can make a difference.
<lisp123> madnificent: Must be that :) I did some tests and the second time was 0.002 faster with 0 page faults...I hope page faults isn't a bad thing :(
<semz> 0.002 is random jitter territory
<engblom_> phoe: Nope, I have not looked at dynamic variables yet
Algernon666 has quit [Ping timeout: 252 seconds]
<madnificent> lisp123: Not saying there might not be more at play, but these things I've noticed make a difference in benchmarks. Especially on modern hardware. Latest Epyc has 800Mb L3 cache so all your data may still be in cache second time you run many benchmarks.
<phoe> engblom_: you should, they are a very useful concept
<lisp123> madnificent: Thanks for the info, useful to know
<engblom_> After quickly looking it up, it seems to be just old (let ...). Or am I missing something?
tyson2 has quit [Remote host closed the connection]
<phoe> it isn't just the LET
<lisp123> semz: Indeed :)
<phoe> it's the variable itself that's special
<phoe> (defvar *var* 42) (defun foo () *var*) ;; what will (foo) return?
<phoe> ;; and what will (let ((*var* 24)) (foo)) return?
gaqwas has joined #commonlisp
<engblom_> phoe: The first one would give 42, the second one would give 24?
<waleee> Anyone using a musl-based linux distro? How's uiop-funtioning there? Someone on #nyxt got this error https://uploads.kiwiirc.com/files/6818932137863528d7ed745aa373c4cd/pasted.txt
<engblom_> waleee: On Alpine Linux it works well for running commands.
<phoe> engblom_: yes, that's how dynavars work
jstoddard has quit [Remote host closed the connection]
jstoddard has joined #commonlisp
attila_lendvai has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
<Xach> waleee: that suggests libfixposix is missing
<Xach> waleee: which is used by iolib
<waleee> I'm aware, but said person is adamant that they have libfixposix installed via the voidlinux package manager
<Xach> ok
<semz> With no offense intended, I feel like the person in question doesn't really know what he's doing...
<Xach> semz: that does not seem reasonable from the available information
<semz> He's in other channels.
<Xach> waleee: perhaps it did not get reloaded when the image restarted
<waleee> Xach: I directed him to channels where there's more sbcl & musl-specific knowledge
<waleee> seems like they're getting help by someone both in #void & #musl atm
<Xach> phoe: the last two elements are the x and y translation values
<Xach> see transform-matrix.lisp and the pdf/postscript manuals
<phoe> Xach: OK, that's something I can use
kotshie_ has joined #commonlisp
kotshie_ has quit [Client Quit]
<phoe> is there a nice way of getting that value from outside other than via triple :: ?
biog has joined #commonlisp
<phoe> I mean, (v::transform-matrix-x-offset (v::transform-matrix v::*graphics-state*))
<Xach> Don't think so
<phoe> I'll be ugly in vecto-imago then
<Xach> IMPORT is one way
<Xach> Import them if you like
<Xach> Or write an external function that returns the matrix vector
<Xach> Or something!
<phoe> writing an external reader function and exporting accessors for that matrix is one idea
rain3 has quit [Ping timeout: 268 seconds]
kevingal_ has joined #commonlisp
lisp123 has joined #commonlisp
igemnace has quit [Ping timeout: 240 seconds]
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<madnificent> _death: That paper gave me some insights on how I could tackle this better. It needn't be as native as I first wanted it to be. Further, http://www.lispworks.com/documentation/HyperSpec/Body/22_bb.htm is also interesting material. More pointers obviously welcome
myrrh has quit [Quit: leaving]
<_death> the source code of lisp implementations also tends to have a lot of of pretty-printing examples.. although often it's cryptic format strings and may need to be translated back to lisp in order to be understandable
<_death> one way to get a starting point is to use macroexpand, e.g. (macroexpand-1 '(formatter "~:<~W~^ ~3I~:_~W~^~1I~@{~:@_~:<~^~W~^ ~:I~@_~@{~W~^ ~_~}~:>~}~:>"))
treflip has quit [Quit: ERC (IRC client for Emacs 27.2)]
tyson2 has joined #commonlisp
lisp123 has quit [Quit: Leaving...]
gaqwas has quit [Remote host closed the connection]
Algernon91 has quit [Ping timeout: 260 seconds]
Algernon91 has joined #commonlisp
aartaka has quit [Ping timeout: 240 seconds]
alvaro121_ has joined #commonlisp
alvaro121 has quit [Ping timeout: 250 seconds]
karlosz has joined #commonlisp
Algernon91 has quit [Ping timeout: 252 seconds]
<Xach> phoe: your latest comment truly befuddles me
<phoe> Xach: oh?
<Xach> phoe: if there is translation to 25,25, composing at 25,25 should result in an image with the origin at 50,50
<phoe> I re-added coordinates to COMPOSE, so now translating by (25,25) and composing an image at (25,25) ends up in the final image being---
<phoe> yes
<phoe> that's the result
<phoe> just like the code in the very first comment
<phoe> the final translation is 50,50
<phoe> sorry if I wasn't clear
<Xach> Ok, I missed that the original was 50,50
<Xach> I am unfuddled, thanks
jstoddar` has joined #commonlisp
tyson2` has joined #commonlisp
alvaro121 has joined #commonlisp
parjanya- has joined #commonlisp
Oladon1 has joined #commonlisp
minion has quit [Read error: Connection reset by peer]
specbot has quit [Killed (NickServ (GHOST command used by specbot1))]
specbot has joined #commonlisp
Spec` has joined #commonlisp
lottaquestions_ has joined #commonlisp
Inline__ has joined #commonlisp
greyrat_ has joined #commonlisp
specbot has quit [Remote host closed the connection]
Devon77 has joined #commonlisp
kevingal__ has joined #commonlisp
opc0de has joined #commonlisp
pieguy128_ has joined #commonlisp
ns127 has joined #commonlisp
hobo has joined #commonlisp
minion has joined #commonlisp
tyson2`` has joined #commonlisp
theBlack1ragon has joined #commonlisp
utis_ has joined #commonlisp
Oladon2 has joined #commonlisp
Alfr has quit [Killed (tantalum.libera.chat (Nickname regained by services))]
Alfr has joined #commonlisp
cognemo_ has joined #commonlisp
qhong has joined #commonlisp
rgherdt_ has joined #commonlisp
frodef_ has joined #commonlisp
specbot has joined #commonlisp
hexology- has joined #commonlisp
stack has joined #commonlisp
alvaro121_ has quit [*.net *.split]
karlosz has quit [*.net *.split]
jstoddard has quit [*.net *.split]
kevingal_ has quit [*.net *.split]
Oladon has quit [*.net *.split]
ns12 has quit [*.net *.split]
parjanya has quit [*.net *.split]
Inline has quit [*.net *.split]
rudi has quit [*.net *.split]
jasom has quit [*.net *.split]
amk has quit [*.net *.split]
lottaquestions has quit [*.net *.split]
dcx has quit [*.net *.split]
greyrat has quit [*.net *.split]
selwyn has quit [*.net *.split]
anddam has quit [*.net *.split]
remexre has quit [*.net *.split]
spec has quit [*.net *.split]
cognemo has quit [*.net *.split]
opcode has quit [*.net *.split]
tyson2``` has joined #commonlisp
jealousm` has joined #commonlisp
hineios2 has joined #commonlisp
remexre has joined #commonlisp
perro_ has joined #commonlisp
amk has joined #commonlisp
qhong- has joined #commonlisp
ns127 is now known as ns12
jm has joined #commonlisp
kevingal_ has joined #commonlisp
lagash_ has joined #commonlisp
Demosthe1ex has joined #commonlisp
robin_ has joined #commonlisp
massimo_zaniboni has joined #commonlisp
dcx has joined #commonlisp
loke has quit [Ping timeout: 240 seconds]
Oladon1 has quit [Ping timeout: 240 seconds]
x88x88x has quit [Ping timeout: 240 seconds]
biog has quit [Ping timeout: 240 seconds]
lagash has quit [Ping timeout: 240 seconds]
Demosthenex has quit [Ping timeout: 240 seconds]
Spawns_Carpeting has quit [Ping timeout: 240 seconds]
nature has quit [Ping timeout: 240 seconds]
Spec` has quit [Ping timeout: 240 seconds]
psf has quit [Ping timeout: 240 seconds]
mfiano has quit [Ping timeout: 240 seconds]
Inline__ has quit [Ping timeout: 240 seconds]
perro has quit [Ping timeout: 240 seconds]
tyson2` has quit [Ping timeout: 240 seconds]
snits_ has quit [Ping timeout: 240 seconds]
jgkamat has quit [Ping timeout: 240 seconds]
qhong_ has quit [Ping timeout: 240 seconds]
luna-is-here_ has quit [Ping timeout: 240 seconds]
mzan has quit [Ping timeout: 240 seconds]
hineios has quit [Ping timeout: 240 seconds]
kevingal has quit [Quit: No Ping reply in 180 seconds.]
jmorrison_ has quit [Remote host closed the connection]
taiju has quit [Ping timeout: 240 seconds]
miique has quit [Ping timeout: 240 seconds]
dstein64 has quit [Ping timeout: 240 seconds]
hugo has quit [Read error: Connection reset by peer]
_73 has quit [Ping timeout: 240 seconds]
random-nick has quit [Ping timeout: 240 seconds]
jstoddar` has quit [Ping timeout: 240 seconds]
rgherdt has quit [Ping timeout: 240 seconds]
jealousmonk has quit [Read error: Connection reset by peer]
hineios2 is now known as hineios
robin has quit [Ping timeout: 240 seconds]
psf has joined #commonlisp
lottaquestions_ has quit [Remote host closed the connection]
spec has joined #commonlisp
dstein64- has joined #commonlisp
Oladon has joined #commonlisp
random-nickname has joined #commonlisp
okflo_ has joined #commonlisp
luna-is-here has joined #commonlisp
snits has joined #commonlisp
jaimelm_ has quit [Ping timeout: 240 seconds]
Oladon2 has quit [Ping timeout: 256 seconds]
lottaquestions_ has joined #commonlisp
dstein64- is now known as dstein64
mfiano has joined #commonlisp
nature has joined #commonlisp
cognemo has joined #commonlisp
tyson2 has quit [*.net *.split]
amb007 has quit [*.net *.split]
hexology has quit [*.net *.split]
shka has quit [*.net *.split]
cage has quit [*.net *.split]
hobo_ has quit [*.net *.split]
pieguy128 has quit [*.net *.split]
thomaslewis has quit [*.net *.split]
utis has quit [*.net *.split]
Posterdati has quit [*.net *.split]
Krystof has quit [*.net *.split]
frodef has quit [*.net *.split]
Devon has quit [*.net *.split]
Catie has quit [*.net *.split]
stacksmith has quit [*.net *.split]
theBlackDragon has quit [*.net *.split]
dtman34 has quit [*.net *.split]
mister_m has quit [*.net *.split]
saturn2 has quit [*.net *.split]
_death has quit [*.net *.split]
gabc has quit [*.net *.split]
okflo has quit [*.net *.split]
random-nickname is now known as random-nick
gabc__ has joined #commonlisp
pieguy12- has joined #commonlisp
utis_ has quit [Ping timeout: 256 seconds]
jgkamat has joined #commonlisp
adeht has joined #commonlisp
frodef_ has quit [Read error: Connection reset by peer]
stack has quit [Ping timeout: 256 seconds]
qhong has quit [Ping timeout: 256 seconds]
cognemo_ has quit [Ping timeout: 256 seconds]
theBlack1ragon has quit [Ping timeout: 256 seconds]
tyson2`` has quit [Ping timeout: 256 seconds]
pieguy128_ has quit [Ping timeout: 256 seconds]
frodef has joined #commonlisp
gabc__ has quit [Client Quit]
stack has joined #commonlisp
cosimone has joined #commonlisp
MatrixTravelerbo has quit [Ping timeout: 250 seconds]
selwyn has joined #commonlisp
_73 has joined #commonlisp
Inline has joined #commonlisp
gabc has joined #commonlisp
utis has joined #commonlisp
cgenie[m] has quit [Ping timeout: 245 seconds]
opalvaults[m] has quit [Ping timeout: 250 seconds]
dieggsy has quit [Ping timeout: 260 seconds]
zbrown[m] has quit [Ping timeout: 260 seconds]
theBlackDragon has joined #commonlisp
hexology- has quit [Ping timeout: 256 seconds]
yitzi has quit [Ping timeout: 252 seconds]
Bi[m] has quit [Ping timeout: 252 seconds]
katco has quit [Ping timeout: 252 seconds]
sp has quit [Ping timeout: 252 seconds]
Inline is now known as Guest1020
edmrk[m] has quit [Ping timeout: 260 seconds]
loke[m] has quit [Ping timeout: 260 seconds]
saltrocklamp[m] has quit [Ping timeout: 252 seconds]
hexology has joined #commonlisp
anddam has joined #commonlisp
cage has joined #commonlisp
Guest1020 is now known as Inline
hugo has joined #commonlisp
jasom has joined #commonlisp
cage has quit [Client Quit]
jaimelm has joined #commonlisp
greyrat_ has quit [Ping timeout: 256 seconds]
sepanko has quit [Ping timeout: 245 seconds]
akater[m] has quit [Ping timeout: 250 seconds]
kakuhen has quit [Ping timeout: 240 seconds]
Duuqnd has quit [Ping timeout: 260 seconds]
Arcsech has quit [Ping timeout: 268 seconds]
weechat has joined #commonlisp
weechat has quit [Client Quit]
etimmons has quit [Ping timeout: 260 seconds]
luis` has quit [Ping timeout: 260 seconds]
kevingal__ has quit [Remote host closed the connection]
weechat has joined #commonlisp
Gnuxie has quit [Ping timeout: 252 seconds]
greyrat has joined #commonlisp
weechat is now known as Spawns
shinohai[m] has quit [Ping timeout: 268 seconds]
icepic1984[m] has quit [Ping timeout: 268 seconds]
CodeBitCookie[m] has quit [Ping timeout: 250 seconds]
Mrtn[m] has quit [Ping timeout: 240 seconds]
saturn2 has joined #commonlisp
linjian has quit [Ping timeout: 252 seconds]
Spawns_Carpet[m] has quit [Ping timeout: 268 seconds]
thomaslewis has joined #commonlisp
Posterdati has joined #commonlisp
amb007 has joined #commonlisp
saturn2 has quit [Ping timeout: 256 seconds]
MatrixTravelerbo has joined #commonlisp
saturn2 has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
cgenie[m] has joined #commonlisp
opalvaults[m] has joined #commonlisp
Inline has quit [Quit: Leaving]
shka has joined #commonlisp
Inline has joined #commonlisp
Algernon91 has joined #commonlisp
icepic1984[m] has joined #commonlisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #commonlisp
rudi has joined #commonlisp
zbrown[m] has joined #commonlisp
dieggsy has joined #commonlisp
yitzi has joined #commonlisp
sp has joined #commonlisp
katco has joined #commonlisp
Algernon91 has quit [Ping timeout: 240 seconds]
Bi[m] has joined #commonlisp
loke[m] has joined #commonlisp
Gnuxie has joined #commonlisp
hobo has quit [Ping timeout: 256 seconds]
Everything has joined #commonlisp
shinohai[m] has joined #commonlisp
gaqwas has joined #commonlisp
sepanko has joined #commonlisp
akater[m] has joined #commonlisp
Arcsech has joined #commonlisp
Duuqnd has joined #commonlisp
random-nick has quit [Quit: quit]
edmrk[m] has joined #commonlisp
kakuhen has joined #commonlisp
kevingal_ has quit [Remote host closed the connection]
shka has quit [Ping timeout: 240 seconds]
random-nick has joined #commonlisp
Duuqnd has quit [Read error: Connection reset by peer]
akater[m] has quit [Read error: Connection reset by peer]
Arcsech has quit [Read error: Connection reset by peer]
kakuhen has quit [Read error: Connection reset by peer]
edmrk[m] has quit [Write error: Connection reset by peer]
sepanko has quit [Read error: Connection reset by peer]
shinohai[m] has quit [Read error: Connection reset by peer]
icepic1984[m] has quit [Read error: Connection reset by peer]
dieggsy has quit [Write error: Connection reset by peer]
zbrown[m] has quit [Write error: Connection reset by peer]
opalvaults[m] has quit [Write error: Connection reset by peer]
loke[m] has quit [Write error: Connection reset by peer]
katco has quit [Write error: Connection reset by peer]
rudi has quit [Read error: Connection reset by peer]
cgenie[m] has quit [Write error: Connection reset by peer]
Bi[m] has quit [Write error: Connection reset by peer]
yitzi has quit [Read error: Connection reset by peer]
MatrixTravelerbo has quit [Read error: Connection reset by peer]
sp has quit [Read error: Connection reset by peer]
Gnuxie has quit [Write error: Connection reset by peer]
nworb has quit [Read error: Connection reset by peer]
perrierjouet has quit [Quit: WeeChat 3.4]
shinohai[m] has joined #commonlisp
nature has quit [Ping timeout: 256 seconds]
saturn2 has quit [Ping timeout: 256 seconds]
perrierjouet has joined #commonlisp
adeht is now known as _death
saturn2 has joined #commonlisp
robin_ is now known as robin
katco has joined #commonlisp
sepanko has joined #commonlisp
luis` has joined #commonlisp
edmrk[m] has joined #commonlisp
etimmons has joined #commonlisp
dieggsy has joined #commonlisp
Gnuxie has joined #commonlisp
Mrtn[m] has joined #commonlisp
sp has joined #commonlisp
nworb has joined #commonlisp
yitzi has joined #commonlisp
CodeBitCookie[m] has joined #commonlisp
kakuhen has joined #commonlisp
saltrocklamp[m] has joined #commonlisp
Duuqnd has joined #commonlisp
Arcsech has joined #commonlisp
Bi[m] has joined #commonlisp
MatrixTravelerbo has joined #commonlisp
Spawns_Carpet[m] has joined #commonlisp
zbrown[m] has joined #commonlisp
opalvaults[m] has joined #commonlisp
loke[m] has joined #commonlisp
linjian has joined #commonlisp
akater[m] has joined #commonlisp
cgenie[m] has joined #commonlisp
rudi has joined #commonlisp
icepic1984[m] has joined #commonlisp
karlosz has joined #commonlisp
<paul0> hum, can't load slime using sbcl and quicklisp
<paul0> this file is missing, "/home/paulo/quicklisp/dists/quicklisp/software/slime-v2.24/swank-loader.lisp":
<paul0> and I have slime-v2.26 directory
<paul0> oh, restarted emacs, it seems to be working fine now
Algernon91 has joined #commonlisp
<rotateq> paul0: nice :)
eddof13 has joined #commonlisp
MatrixTravelerbo has quit [Quit: Client limit exceeded: 20000]
zbrown[m] has quit [Quit: Client limit exceeded: 20000]
eddof13 has quit [Client Quit]
sepanko has quit [Quit: Client limit exceeded: 20000]
loke[m] has quit [Quit: Client limit exceeded: 20000]
katco has quit [Quit: Client limit exceeded: 20000]
luis` has quit [Quit: Client limit exceeded: 20000]
etimmons has quit [Quit: Client limit exceeded: 20000]
edmrk[m] has quit [Quit: Client limit exceeded: 20000]
Gnuxie has quit [Quit: Client limit exceeded: 20000]
saltrocklamp[m] has quit [Quit: Client limit exceeded: 20000]
shinohai[m] has quit [Quit: Client limit exceeded: 20000]
Spawns_Carpet[m] has quit [Quit: Client limit exceeded: 20000]
Duuqnd has quit [Quit: Client limit exceeded: 20000]
sp has quit [Quit: Client limit exceeded: 20000]
Mrtn[m] has quit [Quit: Client limit exceeded: 20000]
opalvaults[m] has quit [Quit: Client limit exceeded: 20000]
Arcsech has quit [Quit: Client limit exceeded: 20000]
dieggsy has quit [Quit: Client limit exceeded: 20000]
CodeBitCookie[m] has quit [Quit: Client limit exceeded: 20000]
linjian has quit [Quit: Client limit exceeded: 20000]
nworb has quit [Quit: Client limit exceeded: 20000]
pve has quit [Quit: leaving]
kakuhen has quit [Quit: Client limit exceeded: 20000]
Krystof has joined #commonlisp
theothornhill has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
Algernon91 has quit [Ping timeout: 240 seconds]
gaqwas has quit [Remote host closed the connection]
taiju has joined #commonlisp
theothornhill has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
gaqwas has joined #commonlisp