IRC channel logs

2025-11-14.log

back to list of logs

<chrislck>does anyone remember being a guile beginner?
<chrislck>how weird this prefix notation
<chrislck>then comes the experiments
<chrislck>and then the enlightenment
<chrislck>cons all the things
<chrislck>and then we find dynamic-wind and with-fluids, and wondered how did we stumble into mechanical engineering
<ArneBab>chrislck: I still remember -- and curly-infix still help
<ArneBab>-s me in specific cases.
<ArneBab>dynamic-wind still feels strange to use (and doesn’t seem very performant, not even for the happy path, or am I just using it wrong?) and fluids are still a mystery …
<identity>dynamic-wind is a performance issue created to address call/cc's performance issues…
<mwette>The aha moment for me was first using map and wishing for something similiar that would allow me to purge values. Then I discovered fold! Love fold. And named let is such a lovely thing: the most versatile looping construct.
<identity>mwette: as versatile as goto, one could say
<ArneBab>mwette: fold is awesome! But named let is what solves recursion. At work we so often have in Java and JS the issue "define a listener that must run once during definition and then every time something changes". Named let does that. By default. Because it’s the right thing to do.
<mwette>ArneBab: nice
<dsmith>What really sold me was ((if #f + *) 3 4) in the first rnrs I read.
<dsmith> https://conservatory.scheme.org/schemers/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_sec_4.1.3
<identity>hint: you likely have r5rs texinfo installed, so that link is just (info "(r5rs) Procedure calls")
<identity>((if #f + *) 3 4) is a good demonstration of the «with no restrictions on how [expressions] are composed» maxim of Scheme
<dsmith>Yes!
<ieure>Is there some way to get the list of exported symbols from a module? If I: (resolve-interface '(gnu packages cups)), I get a module object, and I can get/set specific symbols within it, but I don't see anything that lets me enumerate its symbols.
<rlb>Yes, I belive so -- perhaps module-for-each or similar?
<rlb>(module-for-each (lambda (sym var) ...) interface)
<rlb>Perhaps also (module-public-interface ...)
<rlb>...it's been a while since I was messing with all that much.
<ieure>Those aren't in the manual at all :(
<rlb>Right -- unfortunately the module interface is not well documented.
<rlb>I learned it in part from just looking at boot-9.scm.
<rlb>(i.e. search for module- and you see likely candidates, etc.)
<rlb>...well, assuming those functions are actually intended for "public" use.
<rlb>(I suspect the main ones are.)
<rlb>I've started another round of tests with current main on s390x and powerpc, might be a good time for anyone else with an arrangement they're interested in that's not covered by guix ci to also try main again.
<rlb>i.e. we might be back to being about ready for 3.0.11.
<rlb>(Still a few things to do, i.e. still need to double-check NEWS thanks.)
<rlb>(finish up)
<dsmith>Hmm. An updated NEWS is the usual indication that a release is immanent...
<rlb>Ideally I wonder if we should add -std=gnu17 to cflags when it's available. We won't currently build with gcc 15+ otherwise.
<rlb>until we actually fix the issues.
<sneek>wb dsmith :)