IRC channel logs
2017-11-25.log
back to list of logs
<manumanumanu>ArneBab: Maybe. I'd have to port it to use srfi-style keywords and make sure it is rather portable, but the other schemes I is chicken and chez. Chicken doesn't hate syntax-case and chez lacks keywords. <manumanumanu>and it is written with a close eye to the output of guile's optimizer. <manumanumanu>and implementing the for-loops is non-trivial, so I would like to provide a portable version before doing that. Which I don't have much time for <ArneBab>manumanumanu: portability is no requirement, the requirement is a clear specification. <ArneBab>manumanumanu: and *one* implementation <manumanumanu>Well, if I made a srfi, I would like for people to use it. Since it is finkly to get right, I'd like to provide a portable implementation <ArneBab>I think that’s a good thing, but if you don’t have time for it, creating a SRFI with a non-portable implementation makes it viable for others to implement their own specialized version <ArneBab>(good thing: like to provide portable, want use) <ArneBab>I’d love to be able to say speccing is not that hard, but that wouldn’t be correct ☺ <manumanumanu>It builds heavily on the ideas of srfi-42 though, so I could borrow a bit from there <ArneBab>and it provides a usage-pattern which is well-known from other languages <manumanumanu>The thing is, it is kind of borked as a framework compared to the racket ones. The racket macros handle wrapping and stuff, making definitions of new looping constructs and sequence types a lot more flexible. Like it is now, I can't make an (in-generator g) because in-generator cannot know when the generator is finished. <manumanumanu>in racket you could make [i (in-generator g)] expand to [i (in-generator g)] #:break (eof-object? i) <manumanumanu>not having it reduces complexity and makes macro expansion a bit faster, but it is still something I would like to provide before actually labeling it 1.0 <manumanumanu>unless the generator srfi (125?) is extended with optional arguments to know whether a generator is finished or not <ArneBab>that sounds like something which could be useful <manumanumanu>yeah. defining a new looping construct in racket is simple, and you can do it without having to fiddle around with matching. You just specify an argument wrap procedure, and a return value wrap procedure and something else I don't understand <manumanumanu>but I haven't figured out how to do it without incurring a huge cost. the racket way depeds on the jit to remove a lot of overhead <manumanumanu>ArneBab: The sad thing is that I can't do much without making it a lot more complicated. <manumanumanu>The racket for loops source is 4 times the size of mine, with less comments. The thing it provides is mostly convenience, but it also makes for some elegant things like post-guards (where I only have #:final). My in-value is borked because of that, whereas they just provide a post-guard (lambda _ #f). <ArneBab>manumanumanu: than yours might just be better <manumanumanu>ArneBab: Well. I like mine a lot, but having post-guards would let me do all kinds of funny things, like a proper in-value <manumanumanu>and for post-guards I can have wrapping, which would let me clean up how I define for variants <manumanumanu>and wrapping would make in-generator simple, and would let me support generator-based lazy lists (whichever srfi number that has) <manumanumanu>and the best part is, I think I can get the inliner to handle some of the wrapping for me <catonano>ehy amz3 I wanted to thank you for adopting te autotools in guile-wiredtiger and so allowing it to be packaged in Guix <catonano>I don't use it anymore but I lie to see guile libs stabilizing in guix <str1ngs>oh god don't mention autotools right now <str1ngs>I just spent 2 1/2 days making my project autotools complaint. and I still don't think it's done right <str1ngs>the screenshot is one window the REPL is built in <amz3>no no, it's more like a template to start new web projects in guile <amz3>it missing a way to handle uploads <amz3>basically you git clone the repo change the remote and your are good to start a project <catonano>I now that the autotools can be frustrating. But having a project in Guix is a plus, in my view ! Happy hacking ! <str1ngs>it's what things like gnome-terminal use <str1ngs>in my screenshot I'm using vte to host emacs, which connects to the browser repl using geiser <catonano>str1ngs: I see. Cool ! Good luc with the autotools ! <str1ngs>catonano: I think I have it roughly sorted out. just worried about support many versions of guile <catonano>str1ngs: I see. But you're in the right place to askk or guile support ;-) <dustyweb>finalizers are only available to C code I guess? <dustyweb>it would be nice if I could add finalizers to guile objects for the sake of writing a distributed garbage collection system for 8sync <dustyweb>I thought guardians were to stop something from being gc'ed? <dustyweb>do they also let you run something when they would have been gc'ed? <mwette>from the manual: "A guardian protects a set of objects from garbage collection, allowing a program to apply cleanup or other actions." <dustyweb>mwette: cool, thanks.. turns out this is what I wanted :) <artyom-poptsov1>Guilers, to my amusement I just discovered in Guile 2.0.14 that overloading 'equals?' method in GOOPS allows to compare custom objects in the same manner as existing ones. <artyom-poptsov1>I think this feature does not mentioned in the GOOPS part of the manual, or I just failed to find it. <artyom-poptsov1>But overloading 'equal?' seems to be more convenient than rolling out a custom predicate for sure. <str1ngs>hmm I thought guile added /usr/local/ etc to load-path as well <daviid>what is the convention, among C programmers, for int returned value when the function runs fine? I used 1, but it seems many use 0? <sneek>daviid, you have 3 messages. <sneek>daviid, lloda says: might need to declare channels as void* and cast it <sneek>daviid, lloda says: it's kind of weird to mix the ffi and oldschool libguile like this, if you're writing the C I'd declare all the C args as SCM and do the conversions on that side