contrapunctus has left #lisp ["Disconnected: closed"]
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
karlosz has quit [Quit: karlosz]
nicktick has joined #lisp
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
cosimone has quit [Read error: Connection reset by peer]
ukari has quit [Remote host closed the connection]
<nij>
Oh no Bike sorry I missed your message as my friend called. Feeling bad :(
<nij>
>> Weird.. in my stumpwm config, I have (when (ignore-errors (ql:quickload :some-package)) (progn (defcommand ..)))
ukari has joined #lisp
<nij>
When :some-package is not presented, (defcommand) was still evaluated, leading to an error.
<nij>
I was wondering if defcommand is some macro that might "leak".
<nij>
So I did put (progn (setf test 123) (defcommand ... something that will fail))..
amontero has joined #lisp
<nij>
The package :some-package was not presented, so (progn..) shouldn't be evaluated (indeed, TEST wasn't set to 123). However, (defcommand..) was evaluated and led to another error.
gitgood has quit [Remote host closed the connection]
karlosz has joined #lisp
akoana has left #lisp ["Leaving"]
<jasom>
is it possible to sign-extend a number, given a desired bitwidth? i.e. treat a positive number as being the unsigned representation of a twos-complement value?
<jasom>
so e.g. (foo #xff 8) => -1
xsperry has joined #lisp
xsperry has quit [Changing host]
xsperry has joined #lisp
MIF has joined #lisp
<moon-child>
(defun foo (n b) (let ((m (1- (expt 2 (1- b))))) (if (< n m) n (- m n)))
pagnol has joined #lisp
<jasom>
right, but nothing builtin for that?
DHARMAKAYA has joined #lisp
quazimodo has joined #lisp
<pagnol>
morning
<moon-child>
err, s/</<=/
<jasom>
moon-child: or just < without the 1-, but then you'd have a bignum at machine-word sizes
<mfiano>
I'd be impressed if you can do this more efficiently. stassats helped me write that years ago
<mfiano>
(with proper type annotations of course)
<jasom>
ah, uses a multiply to avoid a branch. Probably a good call on any processor made in the last 20 years or so
<moon-child>
mfiano: sounds like a compiler issue :P
<moon-child>
assuming 'width' is hardware assisted, it should be no more than 3 instructions
<moon-child>
(maybe a couple extra if you want to avoid a branch, but predictable branches are übercheap)
Josh_2 has quit [Remote host closed the connection]
<jasom>
mfiano: same # instructions between that and mine, with mine having a branch
<jasom>
s/instructions/bytes
<jasom>
mine is fewer instructions
Kundry_W_ has quit [Remote host closed the connection]
<jasom>
mfiano: yours is about 2x as fast on a quick benchmark despite being more instructions; not too surprising since the sign bit branch is completly random on my test-case
<mfiano>
Code size is not a really meaningful metric
<jasom>
mfiano: I suspect mine would be faster if the test corpus was entirely positive or entirely negative
<jasom>
just tested, and it's indeed slightly faster
<mfiano>
Also depends on the register allocator
ech has quit [Quit: Lost terminal]
<jasom>
in this test case there were plenty of registers so it wouldn't have discovered that
<jasom>
gtg, dinner
<mfiano>
SBCL will register-allocate lexivars if it deems it is good to do so
DHARMAKA_ has joined #lisp
DHARMAKAYA has quit [Ping timeout: 252 seconds]
hypercube has joined #lisp
DHARMAKA_ has quit [Ping timeout: 268 seconds]
bilegeek has quit [Quit: Leaving]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Remote host closed the connection]
DHARMAKAYA has joined #lisp
curtosis[away] has joined #lisp
igemnace has quit [Remote host closed the connection]
<pagnol>
Has anyone here used Postmodern a lot? I only recently found out about it and it seems like the ideal way to interface with a relational db to me, but I'm wondering if there are downsides that only become apparent after a while.
igemnace has joined #lisp
Aurora_v_kosmose has quit [Remote host closed the connection]
Aurora_v_kosmose has joined #lisp
gigetoo has joined #lisp
Kundry_Wag has joined #lisp
<nij>
Hello! I'm trying out qlot. In its official github repo, it says I can get it by (ql:quickload :qlot). But that doesn't seem to generate the binary `qlot` (for cli usage) directly. Did I miss any step? https://github.com/fukamachi/qlot
<Bike>
well, in the readme it mentions that the roswell install, introduces the shell command unlike the quicklisp install
<Bike>
i don't see any obvious explanation of how you get the shell command if installed via quicklisp
<nij>
Erg :-( ok.. yeah I thought there might be an easy way.
<nij>
I'll have to learn rowell then..
<Bike>
there's a makefile. maybe you can just do make
<Bike>
it looks like said makefile just does (asdf:make :qlot)
curtosis[away] has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]
<nij>
very weird, under my .quicklisp/dist.../qlot there's no makefile
<nij>
I should download it from github directly, right?
<Bike>
?\_(?)_/?
nicktick has quit [Ping timeout: 240 seconds]
<nij>
\ ?_? /
<nij>
(this emoji seems confusing and bursting out tears. love it)
<Bike>
hm, something on my end butchered the encoding. sad
nicktick has joined #lisp
srhm has quit [Quit: Konversation terminated!]
<jasom>
mfiano: I beat your version
<mfiano>
Like I siad, I removed the optimizations from mine because I don't know your input
<jasom>
mfiano: sb-c::mask-signed-fied
<mfiano>
If that works for you, fair enoguh. As for me, I wrote Common Lisp code, else I'd be using blub if I wrote code for one implementation
<jasom>
hmm, it looks much better in the assembly but is testing out as 50% slower. That's quite odd.
<mfiano>
the statistical profiler will likely be showing the foreign syscalls that slow it down.
<jasom>
There are literally 2 instructions before the CLC/POP RBP
<jasom>
ah, I just had the value/width backwards since it was opposite of sign-extend.
hineios has quit [Ping timeout: 265 seconds]
<jasom>
the mask-signed-field version is too fast for me to measure with this benchmark (summing a list of integers vs summing it sign-extended differ by less than the noise)
hineios has joined #lisp
nij has quit [Quit: ERC (IRC client for Emacs 27.2)]
chipolux has joined #lisp
<mfiano>
it's roughly an order of a magnitude and a half faster
aartaka has joined #lisp
Alfr is now known as Guest49171
Alfr has joined #lisp
Guest49171 has quit [Ping timeout: 250 seconds]
aartaka_d has quit [Ping timeout: 240 seconds]
<beach>
Good morning everyone!
<mfiano>
Hello beach
remby has joined #lisp
<remby>
In sbcl, this seems to be an error: (setf x 10). It says x is an undefined variable.
<moon-child>
yes
<no-defun-allowed>
Yes.
<moon-child>
you need to define or bind variables before you assign to them
<mfiano>
It's a warning, not an error, but implementations aren't required to do so
Oladon has joined #lisp
<remby>
I was reading practical common lisp and it gave me the impression you could do this, but I misunderstood the example.
<mfiano>
"Once you've created a binding, you can do two things with it: get the current value and set it to a new value."
<remby>
oh, duh
* remby
facepalms
nij has joined #lisp
<mfiano>
The book should be read linearly
<mfiano>
The previous topic discussing binding
<remby>
yeah with defparameter and defar
<mfiano>
and more
<mfiano>
That whole chapter is about ways to bind and use variables
<mfiano>
defparameter and defvar are but two ways
<remby>
I read the entire page, but I skimmed over the let binding
<mfiano>
I would advise against skimming. That book only really has value if you read it linearly and perform all of the practicals
marusich has joined #lisp
Kundry_Wag has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
<nij>
Here's the example what I meant by that the stumpwm macro "defcommand" might be leaking.. dunno why it's the case - https://bpa.st/JOXQ . It stays in the second argument of #'when, and it should not be evaluated. But it is...
<nij>
Could a lisp macro be leaking like this?
<Bike>
no. it couldn't be.
Kundry_Wag has quit [Ping timeout: 240 seconds]
<Bike>
are you sure you have the situation right? like, for example, could something else have defined the record! command?
<nij>
no.. it's pointing to that exact file. and when i add something, the indicating line changes accordingly.
<Bike>
well i don't know what to tell you. that is not how lisp works. the defcommand is not actually being evaluated.
<Bike>
also, the reason you're getting this error is that lisp tries to read the entire form before evaluating it
<beach>
nij: What do you mean by "#'when"?
<Bike>
so it will read recording:prompt-recording before :recording is quickloaded
<Bike>
presumably the when macro
<nij>
beach: the when macro
<nij>
yeah
<beach>
nij: That's a strange way of indicating it.
<fiddlerwoaroof>
I ended up writing my own ics parser, though, because I wanted a streaming-style parser, rather than instantiating objects for the whole calendar in memory
<contrapunctus>
fiddlerwoaroof: whoa, thanks a lot
selwyn has quit [Read error: Connection reset by peer]
mpontillo has quit [Ping timeout: 258 seconds]
rme has quit [Ping timeout: 245 seconds]
jmercouris has quit [Ping timeout: 245 seconds]
gendl has joined #lisp
selwyn has joined #lisp
theruran has joined #lisp
mpontillo has joined #lisp
rme has joined #lisp
jmercouris has joined #lisp
<contrapunctus>
Shinmera: I figured I'd at least update the licenses for your projects on awesome-cl - and there are so many! Talk about prolific 🤯
<Shinmera>
too many, some would argue
imode has quit [Ping timeout: 252 seconds]
random-nick has joined #lisp
cchristiansen has joined #lisp
indathrone has quit [Remote host closed the connection]
indathrone has joined #lisp
orivej has joined #lisp
aartaka_d has joined #lisp
hiroaki_ has quit [Ping timeout: 260 seconds]
<fiddlerwoaroof>
Shinmera: I guess I should have checked your repos first :)
<fiddlerwoaroof>
I made the mistake of just checking Cliki
aartaka has quit [Ping timeout: 240 seconds]
<fiddlerwoaroof>
Although, I think your library is the inverse of mine: I only support parsing ics, you only seem to support generating it
<Shinmera>
Yes, I never got around to implementing parsing.
Posterdati has quit [Ping timeout: 265 seconds]
<fiddlerwoaroof>
I consulted the RFC for mine, but I didn't implement everything: I implemented what was necessary to parse my work calendar and a couple random calendars I found online
<Shinmera>
As usual with RFCs the spec is absolutely insane
<fiddlerwoaroof>
Yeah
surabax has joined #lisp
<Shinmera>
iclendar has the advantage that it actually defines all types and relations in code already, so it could become a strict parser at some point.
<contrapunctus>
Shinmera: some clarification - `deploy` still seems to be Artistic License - is this deliberate? Also, qtools is zlib, correct? For some reason GitHub doesn't seem to recognize it in that specific case.
<Shinmera>
ah, damn, must have forgotten to update deploy somehow, let me fix that.
<Shinmera>
everything should be zlib. if it isn't there's a bug :)
orivej has quit [Ping timeout: 252 seconds]
<Shinmera>
I did the update through a script back then... wonder how it missed deploy.
<Shinmera>
Ah, I was on a branch for that one. At least that explains that lol
hiroaki_ has joined #lisp
<Shinmera>
Fixed both, thanks.
shka_ has joined #lisp
Posterdati has joined #lisp
attila_lendvai has quit [Ping timeout: 246 seconds]
Kundry_Wag has joined #lisp
cosimone has joined #lisp
Kundry_Wag has quit [Ping timeout: 240 seconds]
anticrisis has quit [Read error: Connection reset by peer]
Cthulhux has quit [Ping timeout: 258 seconds]
Cthulhux has joined #lisp
<contrapunctus>
Glad to be of help ^^
Major_Biscuit has joined #lisp
<lukego>
anyone else using Lisp/sbcl from nixpkgs or am I the only such fool around here?
<jackdaniel>
s/fool/visionary/ ;-)
<contrapunctus>
lukego: I might be joining you in that soon.
<contrapunctus>
(...but on NixOS.)
<lukego>
my condolences to you but misery loves company :)
vaporatorius__ is now known as Vaporatorius
Vaporatorius has quit [Quit: Leaving]
Vaporatorius has joined #lisp
Vaporatorius has quit [Changing host]
Vaporatorius has joined #lisp
<fiddlerwoaroof>
lukego: I'm using sbcl mostly from nix
<fiddlerwoaroof>
on darwin
<lukego>
I was just starting to spell out my current problem but I think I arrived at the solution - or at least a next step - in mid-sorrow :)
<fiddlerwoaroof>
Although, I sort of think I prefer my old way of manually building sbcl and putting it in ~/sbcl
anticrisis has joined #lisp
<lukego>
I made an overlay to tweak the flags that sbcl is built with and I'm going nuts trying to understand why this new sbcl isn't being used. but now I realize that the one that is being used is from my user environment. so I know where to look for a problem now
<fiddlerwoaroof>
Yeah, on my work laptop I use home-manager to manage all that, and just install from my overlay to the user environment
<lukego>
Nix has a lot of new features and workflows but I somehow keep using the ones from way back when I first installed it, when "nix pills" was the state of the art
<lukego>
I have heard the term "home manager" before but don't know what it means :)
JohnMS_WORK has joined #lisp
<fiddlerwoaroof>
When I started this job a couple months ago, I decided to rebuild my setup
<fiddlerwoaroof>
home-manager is pretty cool, you have a home.nix and it generates a lot of the dotfiles I used to manage in my dotfiles github repo. It also lets me pick which packages get installed in the user environment
<fiddlerwoaroof>
Which I like, because I don't want to mess with the rest of my mac's system
karlosz has quit [Quit: karlosz]
<lukego>
I'm in a bit of a "lone hacker" mode. The nix expression for my Lisp program actually installs a lot of related stuff e.g. Emacs with a bunch of packages and their configurations.
karlosz has joined #lisp
<lukego>
I'm using ql2nix and that's treating me pretty well
<fiddlerwoaroof>
Cool, I've been meaning to try that
<fiddlerwoaroof>
I find that I want all my dependency management to be initiated from the REPL, though
anticrisis has quit [Read error: Connection reset by peer]
<lukego>
yeah interesting, having Lisp wear the pants and dump out nix expressions could be a nice style
<fiddlerwoaroof>
So, I only install sbcl through nix: when I absolutely need to pin versions, I use legit to clone the relevant repos and configure ASDF
<lukego>
I have a Nix expression with a list [ "1am" "alexandria" ... ] of all quicklisp packages that I want installed and then it arranges for them all to be built and ready when I start sbcl
<contrapunctus>
lukego: sounds like you want Guix 🤔
<lukego>
contrapunctus: have been meaning to look at it one day :)
<fiddlerwoaroof>
I like to pretend that I have a lispos
<lukego>
I want everything pinned by default though, that's the appeal of Nix for me
<fiddlerwoaroof>
Yeah, I've also grown to dislike version pinning from Javascript
<fiddlerwoaroof>
I'd rather be forced to fix my code when the deps update rather than slowly dig myself into a huge pit as the world moves away from me
<fiddlerwoaroof>
If a library breaks my code too many times, I just ban it
davd33 has joined #lisp
<splittist>
What's my best bet for a quick something I can display (possibly elaborately) styled text on from lisp, on Windows 10?
<moon-child>
browser? :P
<fiddlerwoaroof>
spinneret + hunchentoot?
<lukego>
fiddlerwoaroof: yeah. I regularly update to the latest of everything, i.e. refresh my nix distro from the latest quicklisp, but at least I decide when to do that and I can easily rollback if there's a problem that I'm not in the mood to debug.
<fiddlerwoaroof>
lukego: I've sort of been radicalized with the way I can just load and run 40 year old code in CL
<splittist>
Good point. And now I change the requirements: And interact with the text with keyboard and (probably) mouse.
<lukego>
fiddlerwoaroof: I'm likewise radicalized by the old days when a "weekend of lisp hacking" would just mean getting a compatible set of dependencies from cvs :)
<lukego>
(but more genreally I basically stopped using dependencies of any kind many years ago, and then started again when I found nix and could police them. but I digress.)
karlosz has quit [Quit: karlosz]
remby has left #lisp ["Leaving"]
<lukego>
Speaking of errors when rebuilding dependencies, I'm getting an error on compiling screamer now that I didn't have before, with two warnings and one error. I /think/ that the error is a -Werror kind of situation i.e. the compiler didn't find an error but asdf errored when it noticed the warnings (with a backtrace instead of an explanation.) plausible?
<fiddlerwoaroof>
I don't think I've ever seen that happen
<lukego>
(and for all my talk of rolling back inconvenient breakages I can't actually do that because I didn't check-in my previous nix snapshots of quicklisp packages. so um a valuable learning experience about missed steps in my workflow)
hendursaga has joined #lisp
<Nilby>
splittist: Unfortunately the bar for such a thing is very high now that it's expected to handle all the worlds languages and render super fast in a GPU.
<lukego>
seems like asdf:*compile-file-failure-behaviour* default behavior on SBCL will error from ASDF if the compiler warns
<Shinmera>
splittist: qtools should still work fine on windows.
<fiddlerwoaroof>
lukego: *compile-file-warnings-behaviour* I think is the equivalent to -Werror
<lukego>
hey it is actually kind of nice that -Werror is the default. that motivates me to actually dig into problems knowing that other people aren't just leaving them :). here's the screamer warning, I'll dig into it now https://gist.github.com/lukego/1da425f16384bb53f2c416c49d5b6ecd
<splittist>
Shinmera: I get "debugger invoked on a SB-KERNEL::UNDEFINED-ALIEN-FUNCTION-ERROR ... The alien function "sw_find_class" is undefined."
<Shinmera>
:(
hendursa1 has quit [Ping timeout: 240 seconds]
<lukego>
(though if I need to patch screamer that's a problem because my current nix workflow doesn't really support anything but upstream projects from quicklisp..)
asarch has joined #lisp
<fiddlerwoaroof>
Is there a good library for extracting only interesting content from an HTML page
<fiddlerwoaroof>
e.g. a readability type thing?
<lukego>
this looks like a pretty clear cut bug in screamer:
<lukego>
(if (vectorp sequence)
<lukego>
(dolist (element sequence)
ukari has quit [Remote host closed the connection]
attila_lendvai has joined #lisp
attila_lendvai has quit [Changing host]
attila_lendvai has joined #lisp
<fiddlerwoaroof>
Yeah
<jackdaniel>
it is written for a special-purpose implementations that represent vectors as lists :)
<lukego>
sounds like something I would do ..
ukari has joined #lisp
<asarch>
One stupid question: if I had this (:id 30 :username "asarch" :password "xxx-yyy") I could easily get the username with (getf user :username)
<Shinmera>
splittist: if you add a :depends-on for qt-libs first, does that work?
<jackdaniel>
that's not a question
<asarch>
But what if I would have a list of lists with n elements ((:id 1 :username "foo" :password "...") (:id 2 :username "bar" :password "...") ... (:id n :username "baz" :password "...")), how could I easily get the username of the n element?
<jackdaniel>
(getf (nth n your-list) :user)
<asarch>
Do I need to traverse the entire list every time I want a specific element of them?
<jackdaniel>
s/:user/:username/
<asarch>
Bingo!
<asarch>
Thank you! Thank you very much! :-)
pve has joined #lisp
<asarch>
But what if I don't know the position of the record?
<jackdaniel>
if you store users on the list and you are not caching results (or add other optimizations) then yes, you traverse the list
<jackdaniel>
then how do you know which username do you want to get?
<splittist>
Shinmera: doesn't qtools already :depends-on qt-libs? The error arises when trying to load the examples.
<White_Flame>
since the FIND will return NIL on not found, it should all safely collapse to NIL even through the subsequent GETFs
quazimodo has joined #lisp
<lukego>
phoe: ah! the version issue
<jackdaniel>
another solution (loop for user = (nth (random (length users)) users) when (eq (getf user :id) <your-id>) do (return (getf user :username))) ;-]
<Shinmera>
splittist: it does but there's some weird dependency fluke apparently
cchristiansen has quit [Remote host closed the connection]
<asarch>
Thank you very much once again guys :-)
<splittist>
Shinmera: OK. Trying. Thanks! I know you have better things to do.
<asarch>
Have a nice day :-)
asarch has quit [Quit: Leaving]
<jackdaniel>
you too, thanks
<Shinmera>
splittist: No no, sorry things aren't working right away :(
<Shinmera>
I also wish I could just recommend Alloy, but it's still very rough.
<phoe>
I had this qtools issue when installing/compiling from scratch; I usually install and compile it, close my image, quickload it again, and then it works
<phoe>
but this only manifests during the very very first installation so I rarely ever reproduce it
<Shinmera>
yeah it's a very elusive bug that I could never quite trace.
<fiddlerwoaroof>
Hmm, the USE-VALUE restart in slime seems to break everything when it's selected for a PACKAGE-DOES-NOT-EXIST error
<phoe>
huh? what do you mean?
<fiddlerwoaroof>
It's more complicated than that
<fiddlerwoaroof>
I'm not entirely sure what's going on
<fiddlerwoaroof>
Now to see if I can come up with a minimal reproducing case
<lukego>
maybe the lowest hanging fruit here would be to somehow get quicklisp to apply patches during installation
<lukego>
anyone have such a mechanism? (asdf-level would be fine too I guess)
<fiddlerwoaroof>
lukego: it's sort of a hack, but you could add a component that's like (:file "patches")
<fiddlerwoaroof>
And just put all the patches into patches.lisp
<Shinmera>
you can build your own quicklisp dist that has different versions of the libraries you want to patch.
<Shinmera>
but that's involved.
<flip214>
lukego: I've just a few local git checkouts with changes in my local-projects
<lukego>
fiddlerwoaroof: but I don't have a private copy of the source tree where the asd file is defined
<fiddlerwoaroof>
Add it to your project's asd
<lukego>
I have a few local git checkouts too but I don't like that because it undermines my pinning and upgrading discpline. but okay that would be an acceptable workaround especially for screamer that's not updating rapidly
<lukego>
fiddlerwoaroof: my project's asd doesn't get loaded because its dependencies have failed to compile
<fiddlerwoaroof>
Hmm, yeah you'd need to have a second system
<lukego>
I think that patches make sense to me. I'll be meaning to make a series of small temporary changes sparsely spread across various dependencies
<lukego>
lemme see if ql2nix provides an opportunity to patch things neatly
<fiddlerwoaroof>
I just realized that I'm assuming the dependency actually loads
<lukego>
you know for now I'll just stop using screamer :)
<phoe>
I can see that nikodemus is not very active
<phoe>
maybe it would be worth to fork screamers to sharplispers and apply the fix there, since it's trivial
<phoe>
Xach: fe[nl]ix: what do you think?
<phoe>
s/screamers/screamer
<fiddlerwoaroof>
nikodemus has basically quit CL, I think
<scymtym>
phoe: sounds good to me. for other projects he created or was involved in (esrap, alexandria), ownership has already been transferred. for esrap, he explicitly blessed the transfer
<jackdaniel>
MetaYan_: do you have any opinion about this?
<phoe>
scymtym: I've sent him a mail so I can also have an explicit blessing
<phoe>
;; and in case of no response, I'll be happy with an implicit blessing
contrapunctus has left #lisp ["Disconnected: closed"]
ramHero has quit [Remote host closed the connection]
DHARMAKAYA has quit [Quit: Turning off a portion of this simulation.]
nicktick has quit [Ping timeout: 252 seconds]
<fiddlerwoaroof>
Does anyone know of a library for extracting metadata from PDFs?
<fiddlerwoaroof>
cl-pdf isn't great for parsing PDFs
memories_ has left #lisp [#lisp]
aartaka_d has quit [Read error: Connection reset by peer]
aartaka has joined #lisp
<flip214>
fiddlerwoaroof: what kind of metadata are you looking for?
<flip214>
Marc is responsive if you have any feature requests
cosimone has quit [Remote host closed the connection]
<lukego>
Maybe should also hack ASDF to print a user-facing message about upgrading errors to warnings, I found that very confusing
<lukego>
I'm really sorely lacking a workflow to be able to hack on dependencies :-|
zaquest has quit [Quit: Leaving]
zaquest has joined #lisp
ebrasca has joined #lisp
scymtym has quit [Read error: Connection reset by peer]
lotuseater has joined #lisp
cosimone has joined #lisp
hhdave has quit [Ping timeout: 260 seconds]
froggey has quit [Ping timeout: 268 seconds]
dilated_dinosaur has quit [Ping timeout: 246 seconds]
Noisytoot has quit [Ping timeout: 240 seconds]
Adamclisi has quit [Ping timeout: 268 seconds]
Noisytoot has joined #lisp
<lukego>
I know you all think I'm a bad person for using Serapeum's -> macro to declare function types in design-by-contract style, but I'm finding it really useful in practice, I do a bunch more type checking than I usually would and it catches sloppiness like carelessly returning multiple values
<phoe>
I actually like and dig ftype declarations
Adamclisi has joined #lisp
froggey has joined #lisp
Elzington has quit [Read error: Connection reset by peer]
Elzington_ has joined #lisp
dilated_dinosaur has joined #lisp
<flip214>
sbcl can infer return types by itself (at least sometimes), so declaring argument types already helps quite a lot
<Nilby>
Return type? Suprise me. [too complex to check]
<lukego>
I'm declaring return types now and appreciating the compiler often telling me that I'm carelessly returning multiple values when I only mean to return one
<White_Flame>
flip214: it doesn't do that for non-returning error calls, though
<Nilby>
Unused multiple values are a primary food source for hungry ghosts.
<White_Flame>
(the fixnum (case foo (:a 1) (:b 2) (otherwise (call-error ...)))) will cause SBCL to scream, even though (otherwise (error ...)) is fine
<Nilby>
You never know when error could return: "the kinds of sweeping effects hinted at by this example"
zooey has quit [Ping timeout: 240 seconds]
zooey has joined #lisp
<White_Flame>
that quote is specifically about an implementation being buggy
<phoe>
White_Flame: actually, no
<phoe>
(declaim (ftype (function () nil) foo)) (defun foo () (error "foo")) (defun bar (x) (the fixnum (case x (:a 1) (:b 2) (otherwise (foo)))))
<phoe>
no warnings for me
<White_Flame>
hmm, I've tried (function (&rest t) nil) before, and that did nothing for me
* White_Flame
tries again
<White_Flame>
maybe because this is about a LABELS function and not a DEFUN?
<phoe>
(defun bar (x) (labels ((foo () (error "foo"))) (declare (ftype (function () nil) foo)) (the fixnum (case x (:a 1) (:b 2) (otherwise (foo))))))
<phoe>
no warnings for me
<White_Flame>
it tells me that my (syntax-error (&rest rest) ..build error string... (error ...)) function has some wrong derived type, not my declared type
<phoe>
#sbcl will want to know about it in that case
<White_Flame>
ok
<phoe>
yes, that's invalid, SYNTAX-ERROR neither returns (member :true) nor is supposed to return a fixnum
<phoe>
so that's some heavy type confusion
<phoe>
oh wait, the FIXNUM is from the THE call
aartaka has quit [Ping timeout: 240 seconds]
<phoe>
OK, so it's just SYNTAX-ERROR having an incorrect type
villanella has joined #lisp
villanella has quit [Ping timeout: 258 seconds]
troydm has quit [Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset]
<edgar-rft>
where (the fixnum ... (error ...)) IMO is a buggy type declaration, because (error ...) is defined to return *no* values and therefore cannot be a fixnum
vegansbane6963 has joined #lisp
<flip214>
edgar-rft: if it can't ever return, there cannot be a type conflict with the return value (because there is none)
elderK has quit [Quit: Connection closed for inactivity]
<edgar-rft>
Common Lisp is a Lisp-n, so it's far ahead of its time
Nilby has quit [Ping timeout: 258 seconds]
<Xach>
Lisp-nFinity
<phoe>
Lisp-#.(ackermann n n)
<ebrasca>
If CL is Lisp-n , why we don't have algol syntax?
<no-defun-allowed>
"Lisp 2" there refers to a hypothetical successor to the original Lisp (which never happened). Usually Lisp-n refers to the number of namespaces of things that the language manipulates.
<no-defun-allowed>
edgar-rft probably lost count of how many of such namespaces there are in Common Lisp, so wrote Lisp-n with a free variable.
<phoe>
there's also the fact that namespaces are user-definable, so n must be a free variable
<ebrasca>
Why someone need to define new namespaces?
<edgar-rft>
are there also proprietarily owned variables?
<phoe>
because they have new classes of things that need to be named
<edgar-rft>
or enslaved variables?
<phoe>
think of e.g. test suites, or test cases inside those test suites
<phoe>
or of ASDF systems
<ebrasca>
I don't understand.
<phoe>
(ql:quickload :alexandria)
<phoe>
:alexandria designates an ASDF system named "alexandria"
<phoe>
and "alexandria" is a name in the ASDF system namespace
<phoe>
that, obviously, is not a part of the CL standard
orivej has joined #lisp
* jackdaniel
is collecting infinity conses
<no-defun-allowed>
edgar-rft: You are thinking of bound variables.
<edgar-rft>
:-)
<no-defun-allowed>
A crucial part of design-by-contract, where they are legally bound to certain terms and conditions of course.
<phoe>
CL variables can be unbound but not unbounded
<ebrasca>
How I can see this ASDF namespace?
<phoe>
ebrasca: the same way you can see other namespaces
<ebrasca>
How?
<phoe>
the simplest tools are asdf:find-system and asdf:defsystem
<phoe>
see the similarity to cl:find-package and cl:defpackage
<edgar-rft>
LIST-ALL-PACKAGES returns a list of all currently defined packages if that helps
<phoe>
seems like ASDF does not have a LIST-ALL-SYSTEMS function, hm
<phoe>
but this works, (let ((x '())) (asdf:map-systems (lambda (y) (push (asdf:component-name y) x))) x)
Lycurgus has joined #lisp
<ebrasca>
I can have "asd" as function , variable , package , test case ...
<phoe>
sort of kind of
<phoe>
you can't have "asd" as a function because the function namespace is named by symbols
<phoe>
not strings
<phoe>
that's the difference: some namespaces have distinct name types
troydm has joined #lisp
<Lycurgus>
phoe, I was wondering about the price anomalies on your book
<phoe>
Lycurgus: I have no idea about Kindle though! (I don't use it myself)
<Lycurgus>
it's basically just pdf for the amazon reader
<Lycurgus>
generally the kindle version is substantially less often less than half the hardcopy
<Lycurgus>
actually it might be epub or whatever
daphnis has joined #lisp
Bike has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
nij has quit [Remote host closed the connection]
nij has joined #lisp
<nij>
Good morning! I have a lisp file to be run automatically. However, on some machine I don't have certain package, so the symbol PACKAGE:FUN1 may cause an error even at READ time. A workaround is to use (funcall (find-symbol "fun1" "PACKAGE")) instead.. but that means I have to change all of PACKAGE:FUN1 to that long stuff.. is there any better workaround?
<phoe>
wait a second, if you don't have package named PACKAGE then FIND-SYMBOL will signal an error anyway
<phoe>
except at runtime
<nij>
Oh, I did put that into a (when (ignore-errors (ql:quickload :PACKAGE)) [here])
<phoe>
the bug is that you actually use ignore-errors
<phoe>
the system is not loaded until runtime, so you do not have its symbols at read-time.
ljavorsk has joined #lisp
<phoe>
quick and dirty workaround: at the top of your file, (eval-always (ql:quickload :package))
<phoe>
actual solution: use proper ASDF dependencies
refpga has quit [Remote host closed the connection]
<Bike>
it sounded like nij wanted the code to not necessarily be dependent on the system
<nij>
for the second solution, i do expect on some machine there won't be PACKAGE
<Bike>
and asdf doesn't really do optional dependencies as far as i remember
<phoe>
oh, like that
<phoe>
then you need to conditionally quickload anyway
<nij>
(if has-package load! do-nothing!)
<phoe>
IGNORE-ERRORS kinda solves that issue but it's dirty
<phoe>
this sounds like a case for reader conditionals then
<phoe>
along with swank-crew and lfarm for better distributed protocol
<phoe>
s/protocol/computing/
orivej has quit [Ping timeout: 260 seconds]
<phoe>
you can use the swank protocol for CL↔CL communication just fine this way
<Bike>
using an editor protocol for rpc seems like overkill to me. i guess it's easier than developing a smaller protocol and convincing people to implement it
* nij
is in search of a slynk-client
<phoe>
it avoids the NIH syndrome - there is already a battle-tested protocol and a battle-tested server, so why not
<jackdaniel>
there was a clim implementation of this protocol (for climacs) - afair its name was "SWINE" ^_^
<no-defun-allowed>
Does it run in Wine? Then can I debug that combination from a lispm on EINE?
<jackdaniel>
sure it does
layerex has joined #lisp
<nij>
im afraid there's no slynk equivalent of swank-client.
<phoe>
and swank-client is explicitly mentioned there
<phoe>
which is good news for you
aeth has joined #lisp
<nij>
OH great. Lemme see :-D
nikolayclfx has quit [Quit: Connection closed]
CrashTestDummy has quit [Quit: Leaving]
narimiran has quit [Ping timeout: 252 seconds]
indathrone has quit [Ping timeout: 258 seconds]
nij has quit [Remote host closed the connection]
cosimone has quit [Remote host closed the connection]
CrashTestDummy has joined #lisp
msk has joined #lisp
hjudt has quit [Ping timeout: 240 seconds]
msk has quit [Ping timeout: 252 seconds]
amontero has joined #lisp
CrashTestDummy has quit [Quit: Leaving]
Kundry_Wag has joined #lisp
amontero has quit [Quit: ERC (IRC client for Emacs 27.1)]
Posterdati has quit [Read error: Connection reset by peer]
Posterdati has joined #lisp
mrchampion has joined #lisp
ukari has quit [Ping timeout: 252 seconds]
rumbler31_ has joined #lisp
<attila_lendvai>
any ASDF experts? i'd like to avoid perform'ing an operation if the output file exists (i.e. regardless of the modification time). any hints? overriding operation-done-p seems to be not enough.
CrashTestDummy has joined #lisp
ukari has joined #lisp
<flip214>
sorry, I can only offer an opposite hint - if you want to rebuild always, (on linux) you can use a dependency like /proc/stat which is always "current"
<flip214>
attila_lendvai: can you compare the output file's timestamp to itself?
ramHero has joined #lisp
<attila_lendvai>
flip214, my issue is that i don't know what part of ASDF i should hook into. op-done-p is not even called if the input file's mod time is earlier
<flip214>
can you make input file == output file?
neirac has joined #lisp
orivej has joined #lisp
dyelar has quit [Quit: Leaving.]
OlCe has joined #lisp
aartaka has joined #lisp
CrazyEddy has quit [Ping timeout: 240 seconds]
srhm has joined #lisp
dyelar has joined #lisp
hypercube has joined #lisp
luckless has joined #lisp
hypercube has quit [Ping timeout: 240 seconds]
CrazyEddy has joined #lisp
cosimone has joined #lisp
<daphnis>
how do i turn '((a b) (c d)) into '(a b c d)?
<beach>
daphnis: (reduce #'append '((a b) (c d)) :from-end t)
<phoe>
or (a:mappend #'identity '((a b) (c d)))
<phoe>
but that's only because I like mappend
<phoe>
Xach: nikodemus replied! I'll make a private fork first, submit some PRs, and then request him to transfer the repository over to sharplispers
<beach>
phoe: How is mappend implemented?
<phoe>
beach: (loop for results in (apply #'mapcar function lists) append results)
<beach>
That will work.
<phoe>
I assume that LOOP APPEND is smart enough to do :from-end t automatically for optimization
<beach>
yeah.
<beach>
Pretty sure.
<phoe>
_death: I see you have some screamer changes that have not been mainstreamed, should I take a look at them?
<daphnis>
beach: thanks!
<beach>
Pleasure.
slyrus has joined #lisp
<daphnis>
from-end is faster?
<phoe>
yes
<beach>
If you don't to :FROM-END T then you have a quadratic algorithm.
<phoe>
it conses O(n) conses rather than O(n²)--- yes
<splittist>
phoe: if you're reaching for alexandria, why not a:flatten ? (:
<phoe>
note that if your lists are fresh and mutable rather than literal/quoted/immutable, you can NCONC them instead of APPENDing, and you'll cons nothing
<phoe>
splittist: will break in case of nested lists since it'll flatten them all
<phoe>
I got bitten by that once
<beach>
phoe: yes, but without :from-end t, you still have to traverse a quadratic number of times.
<phoe>
beach: oh right, it'll be both O(n²) space and memory
<phoe>
or rather, the latter will be reclaimable by the GC because the intermediate conses will be collectable
<phoe>
but still, this produces GC pressure
* beach
is lost. But that could be because of the time of day.
<phoe>
don't mind me
<beach>
"space and memory"?
<phoe>
time and memory, sorry
attila_lendvai_ has joined #lisp
<beach>
So APPEND without :FROM-END T is quadratic in consing and traversal. NCONC without :FROM-END T is quadratic in traversal only.
aeth_ has joined #lisp
<phoe>
oh right! I was thinking APPLY rather than REDUCE, you're right
<phoe>
REDUCE will work better.
aeth has quit [Disconnected by services]
aeth_ is now known as aeth
attila_lendvai has quit [Ping timeout: 240 seconds]
skapata has joined #lisp
long4mud has quit [Quit: WeeChat 3.0.1]
DanklyTuned has joined #lisp
<_death>
phoe: yeah, I think they make sense
<phoe>
I see that nikodemus just reverted the SBCL change because it broke on clisp for whatever reason
<phoe>
the one with redefinition warnings
<phoe>
wouldn't it make more sense to prevent duplicate definitions from being generated in the first place?
<phoe>
(if possible)
<_death>
it's always possible, but would not be worthwhile in this case
<phoe>
we depend on implementation-defined behavior if we actually do generate multiple definitions
<phoe>
this can sort of work, but also is a portability quirk
chipolux has joined #lisp
<_death>
screamer has a good reason for redefining them (when it realizes they are nondeterministic as they call nondeterministic functions that are defined later)
<phoe>
yes, I see
<_death>
iirc it's not implementation-defined behavior.. check the clhs reference I gave
<_death>
I don't know how it breaks on clisp (I've not checked it)
<phoe>
it's unspecified - CLHS defines that as "unpredictable but harmless"
<phoe>
and that implementations are permitted to specify the consequences, and that portable code must not depend on the results or effects of that situation
<phoe>
"The consequences are unspecified if functions are redefined individually at run time or multiply defined in the same file."
<phoe>
I kinda wonder what "harmless" means in this concrete context
<phoe>
since they are also "unpredictable", so in theory two DEFUN FOO in one file can cause... yes, what exactly is permitted?
<Bike>
this seems like kind of a vague definition.
<phoe>
sure it is, because when we have two DEFUN FOOs in a row then what exactly does it mean that it's "unpredictable" to have stuff like that
<phoe>
because unpredictability itself in such a case is anything but harmless if e.g. we completely skip the second DEFUN FOO
<phoe>
which, naïvely looking, seems to be permitted?
<_death>
I don't remember what prompted me to make that change.. possibly an SBCL warning
<phoe>
I think so, yes, SBCL complains about multiple definitions
<phoe>
it produces full warnings for that
marusich has quit [Ping timeout: 252 seconds]
<_death>
and why does clisp fail?
<MetaYan_>
jackdaniel: I just noticed that you were asking for my opinion about something earlier today, but even after reading the backlog, I still can't figure out what about...
<_death>
(with my change.. presumably it doesn't fail so hard without?)
<phoe>
_death: I have no idea! nikodemus will know
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
curtosis[away] has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]
zaquest has quit [Read error: Connection reset by peer]
aartaka has quit [Read error: Connection reset by peer]
aartaka_d has joined #lisp
aeth_ is now known as aeth
msk has quit [Ping timeout: 265 seconds]
<_death>
phoe: another thing about screamer, I remember they warn about using stuff like DOLIST/DOTIMES in nondeterministic functions, because it may not establish a new binding on each iteration (it's implementation-defined).. but since they shadow CL symbols like DEFUN, why not also shadow DOLIST and friends to provide just that?.. I've not tried it
rumbler31 has quit [Remote host closed the connection]
<phoe>
_death: that can work and should be a simple transform, please make an issue
rumbler31 has joined #lisp
ramHero has joined #lisp
<_death>
phoe: I don't like posting issues :).. to me an issue is a call for action on the maintainer, and I prefer my calls for action to be in the form of pull requests
<phoe>
_death: since it seems that I'll be maintaining screamer in the future - please do so
<phoe>
(and you can explicitly mention that in the issue text if that makes you feel a little bit better)
<_death>
phoe: you may do it yourself, if you're interested ;)
diamondbond has joined #lisp
<phoe>
_death: ...I actually started looking at the docs and I cannot find them there
<_death>
phoe: that's just what nikodemus wrote.. the original docs are in the papers directory
<phoe>
grepping the papers directory shows nothing, either
<_death>
check screamer.pdf
<phoe>
oooh, it is in the PDF file.
<phoe>
grepping doesn't find that.
<phoe>
and transforming DO macros is going to be simple but I don't think I'll want to make a LOOP wrapper
<_death>
right.. LOOP is a no-no too, but it's still useful in deterministic functions..
Major_Biscuit has quit [Quit: WeeChat 3.0.1]
zaquest has joined #lisp
karlosz has joined #lisp
Brucio-43 has joined #lisp
* Brucio-43
test
<phoe>
test successful
Brucio-43 has quit [Ping timeout: 265 seconds]
<Shinmera>
or not.
attila_lendvai_ has joined #lisp
attila_lendvai has quit [Read error: Connection reset by peer]
mindCrime has quit [Ping timeout: 268 seconds]
ljavorsk has quit [Ping timeout: 268 seconds]
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
gaqwas has joined #lisp
varjag has joined #lisp
DHARMAKAYA has quit [Ping timeout: 240 seconds]
imode has joined #lisp
attila_lendvai_ has quit [Quit: Leaving]
attila_lendvai has joined #lisp
attila_lendvai has quit [Changing host]
attila_lendvai has joined #lisp
heisig has joined #lisp
<fe[nl]ix>
phoe: we can certainly move it to sharplispers
<fe[nl]ix>
it would be nice if Nikodemus started that instead of forking
<_death>
there's also screamer+, though the code there likely needs some work..
<mfiano>
Wasn't there a screamer extensions repository with a questionable license, perhaps not by the same author?
<_death>
yeah, it has a "You may not distribute the code without prior consent from me.".. I'm guessing 20 years later, someone could ask the author to relicense
<mfiano>
I guess questionable in that it has none?
<_death>
mfiano: see comment in screamer-plus.lisp
gareppa has quit [Remote host closed the connection]
<mfiano>
Eww, custom license.
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
rumbler31_ has joined #lisp
varjag has quit [Ping timeout: 260 seconds]
Sauvin has quit [Remote host closed the connection]
Cthulhux has quit [Changing host]
Cthulhux has joined #lisp
varjag has joined #lisp
aartaka has joined #lisp
aartaka_d has quit [Ping timeout: 252 seconds]
layerex has quit [Quit: Leaving]
layerex has joined #lisp
layerex has quit [Client Quit]
varjag has quit [Ping timeout: 252 seconds]
jeosol has quit [Quit: Connection closed]
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
remby has joined #lisp
<phoe>
fe[nl]ix: I got a mail from Nikodemus - he'll gladly move it himself once some fixes with PRs are submitted to the original repo
<phoe>
and I'll try doing just that
plaisanterie has joined #lisp
hjudt has joined #lisp
cosimone has quit [Read error: Connection reset by peer]
varjag has joined #lisp
hypercube has joined #lisp
kpoeck has joined #lisp
hypercube has quit [Ping timeout: 246 seconds]
UM-Li has joined #lisp
UM-Li has quit [Client Quit]
davd33 has quit [Remote host closed the connection]
narimiran has joined #lisp
<attila_lendvai>
luis, ping. would you mind if we made cffi get captured by quicklisp by a moving tag instead of the tarball from cl.net? i.e. tagged-git https://github.com/cffi/cffi.git stable
<attila_lendvai>
luis, that would make it more flexible for us to designate which state ql should capture... just move a tag, instead of releasing...
hypercube has joined #lisp
plaisanterie has quit [Quit: Connection closed]
OlCe has quit [Ping timeout: 240 seconds]
layerex has joined #lisp
<fe[nl]ix>
phoe: very nice
<fe[nl]ix>
attila_lendvai: what's the benefit ?
<attila_lendvai>
fe[nl]ix, anyone who has the git commit bit can designate what should go into ql. moving a tag is much less work than releasing, and maybe you don't want to release, yet you want ql to get some patches.
aartaka_d has joined #lisp
<attila_lendvai>
another benefit is that ql can capture the sources even if cl.net is down (assuming that github.com will better survive any upcoming internet split)
hendursaga has quit [Ping timeout: 240 seconds]
aartaka has quit [Ping timeout: 240 seconds]
<Odin->
attila_lendvai: I'd guess that depends on whether you end up on the Apple or Facebook side.
<Odin->
:p
layerex has quit [Remote host closed the connection]
<attila_lendvai>
Odin-, i'm more worried about politicians screwing us up with their geopolitical nonsense...
<attila_lendvai>
bonus reason: git is a much better versioning tool than named tarballs on random servers...
<Odin->
attila_lendvai: Those are all 'soft' splits, and most of the ones that are likely to happen based on the geopolitics are already in place.
<Odin->
Unless you're expecting a successful nazi movement in the US next round..?
jeosol has joined #lisp
andrei-n has quit [Quit: Leaving]
aartaka_d has quit [Ping timeout: 252 seconds]
<Shinmera>
this is definitely not the place to discuss politics.
cosimone has joined #lisp
heisig has quit [Ping timeout: 252 seconds]
hypercube has quit [Quit: WeeChat 3.1]
DHARMAKAYA has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 252 seconds]
Lord_of_Life_ is now known as Lord_of_Life
rumbler31_ has quit [Ping timeout: 246 seconds]
asarch has joined #lisp
Nilby has joined #lisp
kpoeck has quit [Quit: Connection closed]
aartaka has joined #lisp
scymtym has quit [Ping timeout: 250 seconds]
krjli has joined #lisp
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
rumbler3_ has joined #lisp
aoeu256 has joined #lisp
narimiran has quit [Ping timeout: 240 seconds]
rumbler31 has quit [Remote host closed the connection]
rodriga has quit [Read error: Connection reset by peer]
remby has quit [Remote host closed the connection]
remby has joined #lisp
<copec>
Is there a standard name for an initialization function that people like to group everything under for some package?
aartaka_d has joined #lisp
anticrisis has joined #lisp
aartaka has quit [Ping timeout: 265 seconds]
rumbler3_ has quit [Remote host closed the connection]
<phoe>
people like adding constructor stuffs as :before and :after methods for that GF
<phoe>
mostly :after
<phoe>
or do you mean something else?
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
hypercube has joined #lisp
DHARMAKAYA has quit [Ping timeout: 260 seconds]
bilegeek has quit [Quit: Leaving]
scymtym has joined #lisp
<copec>
I read in S-exp from a config file into clos objects, and have a function that does it
Lycurgus has joined #lisp
<copec>
I could just (function-name) under a commented init section, but I was wondering if there was a defacto standard, like to make an (init) function or something
<copec>
and group everything under that
<asarch>
What is a "generator"?
<Bike>
that term refers to many different things in many different contexts
<Bike>
do you have one in min
<Bike>
d
<asarch>
As a result of a query from a DB cluster?
<Bike>
it might mean a closure with state that returns a new value from an iteration every time you call it
<Bike>
but that is a guess based on little information
daphnis has quit [Ping timeout: 240 seconds]
daphnis has joined #lisp
aoeu256 has quit [Ping timeout: 265 seconds]
gaqwas has quit [Ping timeout: 240 seconds]
DHARMAKAYA has joined #lisp
cage_ has quit [Quit: Leaving]
<asarch>
Where could I learn more about it?
msk has joined #lisp
<Bike>
i don't know? the documentation of whatever system you're getting this thing from, probably?
<asarch>
I see
<asarch>
Thank you Bike! Thank you very much! :-)
<asarch>
Have a nice day!
asarch has quit [Quit: Leaving]
shka_ has quit [Ping timeout: 240 seconds]
msk has quit [Ping timeout: 240 seconds]
daphnis_ has joined #lisp
Kundry_Wag has quit [Read error: Connection reset by peer]
daphnis has quit [Ping timeout: 240 seconds]
mindCrime has joined #lisp
Kundry_Wag has joined #lisp
<Alfr>
I think w-h-t-i has a nice example for generators in that sense, Bike.
X-Scale has quit [Ping timeout: 252 seconds]
X-Scale` has joined #lisp
jeosol has quit [Quit: Connection closed]
jeosol has joined #lisp
msk has joined #lisp
theothornhill has joined #lisp
msk has quit [Ping timeout: 240 seconds]
wsinatra has quit [Quit: WeeChat 3.1]
theothornhill has quit [Ping timeout: 252 seconds]
elderK has joined #lisp
CrazyPython has joined #lisp
cosimone has quit [Read error: Connection reset by peer]
daphnis_ has quit [Ping timeout: 268 seconds]
theothornhill has joined #lisp
daphnis has joined #lisp
remby has quit [Quit: Leaving]
gaqwas has joined #lisp
gaqwas has joined #lisp
theothornhill has quit [Ping timeout: 246 seconds]
daphnis has quit [Ping timeout: 265 seconds]
theothornhill has joined #lisp
devrtz has quit [Ping timeout: 258 seconds]
Yardanico has quit [Remote host closed the connection]
varjag has quit [Remote host closed the connection]
varjag has joined #lisp
Yardanico has joined #lisp
devrtz has joined #lisp
krjli has quit [Remote host closed the connection]
msk has joined #lisp
gaqwas has quit [Ping timeout: 265 seconds]
theothornhill has quit [Ping timeout: 240 seconds]
varjag has quit [Ping timeout: 268 seconds]
msk has quit [Ping timeout: 252 seconds]
villanella has quit [Quit: villanella]
contrapunctus has left #lisp ["Disconnected: closed"]
chipolux has quit [Quit: chipolux]
contrapunctus has joined #lisp
rumbler31_ has joined #lisp
surabax has quit [Quit: Leaving]
skapata has quit [Ping timeout: 260 seconds]
skapata has joined #lisp
Lycurgus has quit [Quit: Exeunt]
curtosis[away] has joined #lisp
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
pve has quit [Quit: leaving]
maiqthefalse has quit [Quit: Connection closed for inactivity]
aeth has quit [Ping timeout: 252 seconds]
aeth has joined #lisp
<fiddlerwoaroof>
flip214: maybe I should contact him directly, I'd like to pull things like author/title/etc.
lotuseater has quit [Quit: ERC (IRC client for Emacs 27.1)]
<fiddlerwoaroof>
The last time I tried, I also ran into issues with PDF spec versions, I think
charles` has joined #lisp
curtosis[away] has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]
nicktick has quit [Ping timeout: 240 seconds]
skapata has quit [Remote host closed the connection]
aartaka_d has quit [Ping timeout: 240 seconds]
hendursaga has joined #lisp
hendursaga has quit [Remote host closed the connection]