IRC channel logs

2014-09-10.log

back to list of logs

<nalaginrut>morning guilers~
<nalaginrut>hmm...seems there's no let* in tree-il, so it's the writer's duty to handle it manually?
<nalaginrut>frontend writer
<ijp>correct
<taylanub>nalaginrut: (let* ((x a) (y b) ...) ...) is just (let ((x a)) (let ((y b)) ... ...)) so it should be pretty easy
<nalaginrut>yes, just confirm it
<nalaginrut>;-)
<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)
<nalaginrut>ah, nice~
***Bortaqqq is now known as Peqlez
<civodul>Hello Guilers!
<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> https://github.com/ft/guile-termios/blob/cygwin/scheme/termios.scm#L43
<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.
<dsmith-work>Hey hey
<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? :)
<artyom-poptsov>When I needed to configure serial port from Guile I've written a wrapper in C only for the needed procedures: https://github.com/cadrspace/indicator/tree/master/termios
<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>ft: Yes, I think so as well.
<artyom-poptsov>davexunit: Yeah, we in CADR hackerspace want to make some kind of LED display controlled with Guile over a network.
<davexunit>I really need to checkout guile-termios
<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.
<ft>To get the FFI tests working on cygwin, I did this: http://paste.debian.net/120241/
<daviid>hello guilers!
<Peqlez>daviid
<Peqlez>what is your opinion on the way parameters are currently encoded in Scheme
<Peqlez>as in, subroutines.
<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? :)
<dsmith-work>Lambda the ultimate immutable state-changer
<Peqlez>taylanub, no, it is an imperfection.
<Peqlez>And I demand perfection.
<taylanub>use Kernel then, not Scheme
<taylanub>.oO( that'll keep em busy )
<dsmith-work>I think blue is best.
<Peqlez>What is Kernel?
<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>hmm
<Peqlez>"Special-form combiners are second-class objects."
<Peqlez>This can't be efficient
<Peqlez>runtime macros.
<Peqlez>Well
<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