***DeeEff_ is now known as DeeEff
***__zxq9__ is now known as _zxq9_
***cojy_ is now known as cojy
***siel_ is now known as siel
***C_Keen is now known as C-Keen
***lloda```` is now known as lloda
<wingo>civodul: do you have any thoughts on the ports stuff? <wingo>otherwise i'm going forward with hackings <wingo>not merging quite yet; i want to get to a suspendable read-char before merging i think <jmd>I have a list of lists, and I want to make sure that the car of each list is unique. What is the easiest way to do that? <lloda>(delete-duplicates (sort l (lambda (a b) (< (car a) (car b))))) if you can order the cars <lloda>you'd need also a predicate cars-are-equal for delete-duplicates, I missed that <civodul>wingo: no! i've been meaning to read about it :-) <civodul>let me see if i can provide useful feedback today <wingo>i can push my WIP work today too <wingo>that moves port-related things to a separate module that is loaded by (guile) after the boot <wingo>to provide the same scheme interface <wingo>but once it's in a module and is out of the boot process it's easier to hack on <civodul>paroneayea: did you eventually merge the elisp branch in Guile? <civodul>the news you brought from the Emacs hackathon are excellent <civodul>lazy maintainers shouldn't prevent you from making progress ;-) <wingo>i think that branch changed some things about the compiler <wingo>so probably review and round trips are needed <wingo>i looked at it initially but it wasn't an immediately mergeable thing i didn't think <wingo>i should take another look :) <paroneayea>civodul: wingo is right, it did change some compiler things, so it's waiting on review :) <wingo>ACTION tries to remember why the-root-module and the-scm-module are different <wingo>ACTION pushed (ice-9 ports) to wip branch <civodul>wingo: the-scm-module is the interface of the <civodul>wingo: the-scm-module is the interface of the-root-module, no? <wingo>civodul: yeah but they share an obarray <wingo>so all definitions made by the-root-module are exported to the world <wingo>so there's no point in them being separate <rain1>I think people (myself included) will benefit from some explanation about what 8sync is/does <davexunit>rain1: that jlarocco user has no idea what they're talking about <rain1>I was trying to put it lightly :P <wleslie>good idea. how did you go unpacking those structs? <civodul>paroneayea: awesome web site, both aesthetically and in terms of conciseness/clarity! <civodul>the news items are managed by Haunt, right? <davexunit>civodul: yes, Haunt generates the entire site, including news. <davexunit>which resulted in me receiving some very nice patches from paroneayea <davexunit>haunt 0.2 coming "real soon now" a.k.a. when I have motivation and time <civodul>davexunit: we should probably use it for Guix, no? <davexunit>we could, with some effort put into porting. <davexunit>I cannot lead the charge on it at this time, though. <davexunit>I'm going to try to make the documentation a little less terrible before I release. <davexunit>then maybe someone else could do the work without pulling their hair out. <paroneayea>civodul: haunt + skribe is a joy and half to work with <paroneayea>civodul: I think guix website port to haunt makes sense... then maybe you can finally host blogposts on the guix site itself :) <paroneayea>civodul: and even have pictures in them sometimes! :) <paroneayea>civodul: re: "conciseness" of the 8sync main page, I agree it's nice... though it's partly because its incomplete :) <paroneayea>the challenge will be fleshing it out without losing the aesthetics derived from the main page's current minimalism :) <civodul>paroneayea: yeah i think we should recruit someone to "port" the site to haunt <paroneayea>davexunit: the only thing I "wish for" that that thing provides: <rain1>wow json doesn't allow comments? that's strange <paroneayea>rain1: no comments in standard json. The general reason given is "well it's just data" but that's clearly bs <paroneayea>because there's plenty of data formats which are much less aimed for human readability than json <paroneayea>the appealing part of json is that it's in the middle of machine readable and human readable. <rain1>did you see my link earlier, paroneayea ? <paroneayea>rain1: I saw that link yesterday, but looking at updated comments now <paroneayea>yeah, one person on there doesn't know what they're talking about, but luckily there's a commenter there (mjn) who's very clear <rain1>i wasn't able to understand him <paroneayea>rain1: I'm planning on including a tutorial video to go with it, but let me see if I can give an on the fly explaination <paroneayea>rain1: have you done any event driven programming? <rain1>is that just having loads and it becoming spagetti code? <paroneayea>rain1: it's having to split your functions across a lot of tiny tiny functions in a way that becomes very spaghetti like, yes <paroneayea>and suddenly you can't tell how your code flows anymore <paroneayea>rain1: so for example, the version on the site shows something like this: <paroneayea>rain1: well, you can see the example there already: <paroneayea>rain1: so if you were to do that with just callbacks <rain1>oh boy freenode is still getting ddos'd <rain1>just got all your messages in one block ***Fuuzetsu is now known as Guest51019
<paroneayea>in this case, the fetch-active-users is happening asynchronously, and it needs a place to pass the users once they're ready <paroneayea>but I had to split it into two functions to pass it back <paroneayea>not only that but I needed some way of passing along a callback <paroneayea>instead of just passing it back as the result of the initial function <rain1>so it's a new way of event driven programming without any callbacks? <paroneayea>rain1: correct, or rather, the callbacks are hidden <paroneayea>and when the data is ready, it wakes back up again, <paroneayea>but it looks like you were just writing synchronous code. <cojy>where is the continuation delimited at? <paroneayea>and it does that because the 8sync event loop has some fancy stuff to handle coroutines via delimited continuations <paroneayea>cojy: but users don't need to be able to read that <paroneayea>you also don't *have to* use (8sync (foo)) to do callbacks <paroneayea>you can do normal callbacks, by returning them from a function <paroneayea>but if you use (8sync (foo)), it aborts to the prompt, sets up the code you've requested to call in a promise <paroneayea>and when it's done, it calls the suspended function again <paroneayea>in the future, "delimited continuations" might not even be mentioned on the front page of 8sync's site, as knowing how that works is a distraction for most potential users. for many users, it'll be magic, but the documentation will clearly explain how it works for those who are interested. <paroneayea>magic, with full permission and assistance of peeking behind the curtain :) <rain1>the first bit did! after you went into continuations i got lost :) <paroneayea>rain1: which might be why technical terms will disappear from the 8sync front page eventually <cojy>paroneayea: well i guess i'd just need a full example, because i dont see how the user is expected to use it from the start, where the toplevel prompt is <rain1>I was thinking of a simple example: what if you have 2 buttons and a number, one button increments it and one decrements it <cojy>this is how i would explain how delimited continuations help with async <rain1>so i can imagine how you'd have a call back for each button to do that <rain1>is that something that could be written with 8sync in a more compact way or something? <paroneayea>anyway, I need to get back to work. More examples coming soon. <rain1>I think I'm starting to get it :D <rain1>I guess it's a little tricky because to have events happening you need a platform like IRC, webserver, GTK, .. <rain1>and then a program builds on top of that <cojy>what's the best way to get a string from the response body of an http request in the web client? <davexunit>cojy: you're given a port object to read from, right? <cojy>you have to either make one or a bytevector <davexunit>cojy: the documentation says the body may be a string, bytevector, or #f <davexunit>it will be a port if #:streaming? is set to #t <davexunit>cojy: sounds like the URI you are working with specifies the incorrect MIME type in its response. <cojy>where in the documentation does it say that? <cojy>i was in the response page <davexunit>if you're sure the bytevector is UTF-8 encoded text you can convert it to a string <davexunit>or, you could try passing #:streaming? #t and calling read-string on the port <cojy>it's alright ig ot it, didnt realize http-get returned multiple values ***karswell` is now known as karswell
<rain1>does anyone have implementation of shell | pipe in guile? <rain1>I am just wondering if it's already written