IRC channel logs

2018-03-25.log

back to list of logs

<javyre>/leave
<amz3>o/
<manumanumanu>Ahoy amz3
<manumanumanu>What are you all up to?
<manumanumanu>I'll start!
<manumanumanu>I'm writing something like clojure's transducers for guile! I started by trying to combine map/filter/take-while in a lazy way to avoid iterating over lists many times, but the overhead was too large, even with something more light-weight than streams, so here I am
<manumanumanu>and now it works! haha!
<manumanumanu>and it's fast! :D
<ecraven>shouldn't a clever compiler do stream fusion on just normal nested map/filter/take etc. forms?
<manumanumanu>in a pure world, yes.
<manumanumanu>but detecting whether something is free of side effects is harder than we think
<ecraven>thought I don't know of any that actually does :-/
<manumanumanu>haskell does
<ecraven>I mean scheme compilers
<manumanumanu>well, you can't have an guarrantees about side effects
<manumanumanu>what if your filter function depends on side effects of the mapping function
<manumanumanu>then stream fusion would ruin that
<manumanumanu>that would be up to r8rs to fix, i'd say
<manumanumanu>the sad thing about transducers is that some has to carry state
<manumanumanu>like take
<ArneBab>manumanumanu: wow!
<manumanumanu>ArneBab: pretty much finished with the basic ones.
<ArneBab>manumanumanu: where can we test that?
<manumanumanu>going to do take-while and drop-while later
<manumanumanu>I'll upload it to bitbucket
<chrislck>I'm myself helping bringing gnucash from the 1.8 dark ages to start to use some srfi-1 constructs...
<manumanumanu>how about transducing? :D :D
<chrislck>:-O imagine the old wizards were hacking code 20 years ago without github, unit testing, or map/filter
<ArneBab>manumanumanu: thank you!
<manumanumanu>ArneBab: https://bitbucket.org/bjoli/guile-transducers
<manumanumanu>I haven't implemented the transducers as arity versions of map/filter/take, but that will come next
<amz3>I am not sure what transducers are
<amz3>I read about them, still not sure what it is
<amz3>I think it's related to lazy streams operations, IDK much more
<amz3>I've been hacking together some machine learning project in python, it does output the similarity of the input url with wikipedia articles
<amz3> https://github.com/amirouche/wikimark/
<amz3>and I am getting ready to move my website to haunt
<amz3>also I started a project regarding culturia, in french wikipedia university
<amz3>I will work on creating some free version of multinet https://en.wikipedia.org/wiki/MultiNet
<amz3>there is link at the bottom, to the full book introducing this formalism
<amz3>too bad the research project was shutdown (because of machine learning I guess), the last people working with MultiNet is sempria.de
<amz3>they use bigloo afaik
<amz3>I am trying to convince people behind sempria.de to free some of their software
<amz3>manumanumanu: did you write any documentation regrading transducers?
<manumanumanu>amz3: none yet. They are not lazy. They are a generalisation of reduce/fold, but without being dependant on a sequence type
<amz3>ok
<manumanumanu>they can be made eager, but that requires some voodoo (they are push, not pull like most lazy sequences)
<manumanumanu>the neat thing is that you can combine things like filter/map etc and only have one pass over a list
<amz3>sounds like the stream library I use in neon
<ArneBab>manumanumanu: with MPLv.2 you mean version two of MPL, right?
<manumanumanu>ArneBab: yes.
<Apteryx>emacs-guix always gives me: guix environment: error: execlp: No such file or directory when trying to use environments.
<Apteryx>oops, wrong channel.