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>that was the hardest work
<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
<manumanumanu>and I don't really trust my speccing skills :)
<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>yepp
<ArneBab>and it provides a usage-pattern which is well-known from other languages
<ArneBab>highly optimized (which is cool!)
<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>and it works.
<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>hmmm... maybe I could let the inliner do most of it...
<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>which would make it fit for a srfi :)
<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
<amz3>hello all!
<str1ngs>hello!
<catonano>ehy amz3 I wanted to thank you for adopting te autotools in guile-wiredtiger and so allowing it to be packaged in Guix
<amz3>catonano: yw
<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
<catonano>str1ngs: what's your project ?
<str1ngs>web browser, written in C and guile
<catonano>wow
<catonano>has it a name ?
<str1ngs>it's no finished yet.
<str1ngs>right now I'm calling wemacs
<str1ngs>but that might change. here's a screenshot https://str1ngs.imgur.com/all/
<str1ngs>the screenshot is one window the REPL is built in
<str1ngs>sorry https://imgur.com/bGQoUy1 is a better link
<amz3>here is a screenshot of mine https://screenshots.firefox.com/oNTRUhN0tzf7huii/localhost
<amz3>same theme as usual :)
<str1ngs>guile-web is web framework?
<amz3>sort of
<str1ngs>or web portal maybe?
<amz3>no no, it's more like a template to start new web projects in guile
<str1ngs>ah gotcha
<str1ngs>sounds intresting
<amz3>it missing a way to handle uploads
<amz3>and documentation
<amz3>basically you git clone the repo change the remote and your are good to start a project
<catonano>str1ngs: neat !!
<catonano>I now that the autotools can be frustrating. But having a project in Guix is a plus, in my view ! Happy hacking !
<catonano>i Know, sorry my keyboard...
<catonano>what is a VTE widget ?
<str1ngs>vte is terminal widget.
<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 ;-)
<amz3>re
<OrangeShark>hello everyome
<OrangeShark>everyone
<dustyweb>hm
<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
<mwette>guardians?
<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?
<dustyweb>oh
<dustyweb>they are for cleanup
<dustyweb>thanks mwette
<mwette>from the manual: "A guardian protects a set of objects from garbage collection, allowing a program to apply cleanup or other actions."
<dustyweb>yeah
<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>s/does not mentioned/is not mentioned/
<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
<str1ngs>eg /usr/local/share/guile/site/2.2
<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: something like this, not tested https://paste.debian.net/996997/
<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