IRC channel logs
2017-08-21.log
back to list of logs
<ddp>it’s so nice seeing the whole gang back together... <ddp>that was obviously the wrong window. i think maybe i better just log out of freenode until after the burn is done <ddp>yes, that’s a good plan <tohoyn>does anybody know about guile syntax objects? <tohoyn>I need to know where the (syntax x) forms are compiled <tohoyn>has anybody made a Debian package for guile 2.2? <apacuro>Is it possible to mix C code with macro programming ? <random-nick>using macros in C? C only has CPP macros which operate on simple text substitution <apacuro>Let's say I want to implement a type system within guile, <apacuro>and I want to use a C-implemented hash, to store the type-variable association <random-nick>I think you can do it by using the FFI in macro-expansion time with eval-when <joolean>So, I’m finding `syntax-module’ very useful, but I find that it’s only reliable in the context of `eval-when (load)’. I.e., `(import (foo module)) (syntax-module foo)’ => `(guile user)’ whereas `(import (foo module)) (eval-when (load) (syntax-module foo))’ => `(foo module)’. <joolean>I think I know why this is happening, but is this the expected behavior? <wingo>joolean: what about (begin (import (foo module)) (syntax-module foo)) <wingo>there are some differences based on whether it's two top-level expressions or one <joolean>Sorry to hear about the Paul Graham thing, by the way :) <joolean>If you’d like I can send you a digest of his worst, most-inhumane thoughts <wingo>that's since years ago, and that guy is a jerk anyway :) <joolean>wingo: Doesn’t seem to make a difference. <wingo>guile's expand-time mapping of what module is current is kinda wonky <joolean>Would you accept a patch to add some docs around that? <joolean>Or is it wonky enough that you’d prefer people stay away <cmaloney>for those of us tuning in: what's up with PaulG, the walking horoscope of advice? <wingo>joolean: i dunno, it's somewhere in between the two of those things <wingo>like, it's something i would rather fix than document; but perhaps that is not the useful approach <joolean>oh, I mean, I guess I meant do you want people to stay away from `syntax-module’ itself? <joolean>there are some ominous comments about it in the manual <wingo>no, i mean i would rather have a better story about how top-level binding resolution works <wingo>"and this is a taxonomy of the dragons found herein..." :) <cmaloney>completely unrelated: been playing around with Elm a bit and I have to thank guile for having a snappy REPL <cmaloney>Elm's REPL's syntax checking makes it noticably slow <cmaloney>(and not just the first statement execution like Racket) <ArneBab>I did a basic geometric mean evaluation of the results from ecraven, and it shows a remaining factor 8 distance from chez <ArneBab>(so chez takes on average 1.87-times as long as the fastest while Guile takes on average 15 times as long as the fastest) <ArneBab>(expt (apply * result) (/ 1 (length result))) <ArneBab>(this finally gives me a feeling how programs would perform when run under Chez) <ArneBab>listing only the schemes with at least 54 successful tests: Chez 1.9, Gambitc 2.8, Larceny 4.4, Racket 4.7, Petite 12.0, Cyclone 13.3 Guile 15.4 Gauche 18.7, Sagittarius 21.5 <ArneBab>so there’s still quite a bit space for improvement for Guile on this benchmark <ArneBab>(and with Racket switching to Chez, it should close the gap between Scheme and Java/Go/C#/Ada/Swift) <cmaloney>part of the fun of being married to a college astronomy professor: we're doing science here. <manumanumanu>ArneBab: I finished the first 100 or so problems of project euler with both guile and chez. Chez is friggin fast, but has no batteries included. That's why I started Nietzsche. I have a lazy prime sieve somewhere in my bitbucket repo, and that one beat the Haskell one I copied by so much it wasn't even funny <manumanumanu>ArneBab: and chez sometimes gives you weird or no error messages, which is sad <avoine>rekado: Did you found a solution for serializing Scheme code? <rekado>avoine: no, I have not, because it probably isn’t really what I actually wanted.