<nalaginrut>hmm...seems there's no let* in tree-il, so it's the writer's duty to handle it manually? <taylanub>nalaginrut: (let* ((x a) (y b) ...) ...) is just (let ((x a)) (let ((y b)) ... ...)) so it should be pretty easy <taylanub>(note that the same does *not* apply to `letrec*' and `letrec', so the tree-il letrec takes an 'in-order?' argument to cover them) ***Bortaqqq is now known as Peqlez
<ft>So, in guile-termios I'm using ‘dynamic-link’ and the FFI to access functions like ‘tcgetattr’. On cygwin, those functions are located in "cygwin1.dll". So I thought "Sure, no problem. I'll write a macro that checks %host-type at compile time and expands into the right call, whatever it may be." - It looks like this: <ft>Is that a reasonable thing to do, or would you go about it another way? <ft>(It seems to work fine.) <ft>Also, because someone asked about Guile on Windows yesterday: Guile's stable-2.0 branch builds and runs fine on cygwin (...test-suite is running right now) <ft>Hm. "test-ffi" failed → [dynamic-func "strerror" #<dynamic-object #f>] <ft>I bet this is the same problem as with guile-termios: If the test-suite was to lookup "strerror" in "cygwin1.dll", I bet it would work. <artyom-poptsov>ft: Wow, I didn't know about Guile-Termios. Even better, it is written with FFI. I think I definitely should test it. <ft>Test suite seems to hang at 00-socket.test, but the ffi test passes with looking stuff up in "cygwin1.dll". <ft>artyom-poptsov: What do you need it for? :) <ft>artyom-poptsov: Ah, I see. guile-termios does the system-dependent stuff at build-time. The README briefly explains how it works. <ft>artyom-poptsov: From then on out, it uses the FFI. <artyom-poptsov>I need the termios API in Guile to communicate with an Arduino board. <davexunit>ooh guile programs to talk to arduinos? that sounds awsome. <ft>artyom-poptsov: I'm using guile-termios to talk to a board I'm building for my masters thesis. :) <ft>I guess that's a similar use case. :) <artyom-poptsov>davexunit: Yeah, we in CADR hackerspace want to make some kind of LED display controlled with Guile over a network. <davexunit>I've recently purchased a couple of arduinos and did some firmware hacking for an arcade stick microcontroller ***dsmith-w` is now known as dsmith-work
<ft>With 00-socket.test disabled (it hangs on cygwin), the test-suite completes with: "failures: 11", "errors: 2" <ft>Failures are mostly in i18n.test plus two of them in srfi-18.test. The errors are in statprof.test. <Peqlez>what is your opinion on the way parameters are currently encoded in Scheme <Peqlez>Do you not think it should be punishable on pain of death <dsmith-work>Peqlez: It's a beautiful interface from an R6RS perspective, where modules are immutable. You can't set! something in a module, but you can call a function to set it. Or return it. <taylanub>dsmith-work: well the near-equivalent alternative is having a disjoint type for them where you have a get and set proc: (parameter-get my-param) (parameter-set! my-param value) <taylanub>pro: disjoint type. con: more keystrokes. does it matter much? I think not. is there already a standard for one of the two? yes, SRFI-39 and R6RS and R7RS-small <Peqlez>dsmith-work, well, you don't want a paramater to be normal variable of course, but a different object, like arecord the way taylanub outlines. <Peqlez>The model of making them procedures means that param? is a difficult thing to implement <Peqlez>Like, what happens if you just give a random procedure to parameterize that does whatever <Peqlez>taylanub, also, standards can be changed when in retrospect it was found to be unwieldy, depraecation is a thing. <Peqlez>I'd say that using something like param-ref and param-set! at the very least reduces accidental errors, _any_ procedure can be called as a thunk <Peqlez>Also, parameteres are for some reason not typically banged, while they should, because they're procedures that mutate. <taylanub>bikeshedding. I don't see myself giving wrong objects to `parameterize' often, and any credible implementation will give a meaningful error. they're not banged because they're not a procedure that exists solely to mutate something. satisfied? :) <Peqlez>taylanub, no, it is an imperfection. <Peqlez>"I'm developing a programming language called Kernel. Kernel is a conservative, Scheme-like dialect of Lisp in which everything is a first-class object." <Peqlez>"Special-form combiners are second-class objects." <Peqlez>isn't that basically the same as just lazy evlauation? ***arrdem is now known as grimoire
***grimoire is now known as GENSYM_9001
***GENSYM_9001 is now known as arrdem
***Peqlez is now known as La`Tisha