IRC channel logs

2016-11-03.log

back to list of logs

<janneke>ACTION -> zZzz..
<atw>I'm unfamiliar with Scheme. Is there a facility for finding a powerset, given a set? Specifically, I'm trying to do something like (for-each (lambda (masks) (my-fun (apply logior masks))) (powerset my-masks))
<holomorph>builtin i don't think so
<atw>hmm. Well, what I'm really looking for is a way to call my-fun with every combination of masks. Is there a better way?
<daviid>obá! [guile 2.1.4] when I use error in a procedure, then test the exception is raised, I read this: "ERROR: In procedure scm-error:" ... why in scm-error and not the name of my procedure? (I think someone asked already, but I forgot)
<MoronicAcid>I think I might have found a bug in Guile 2.0.11's "syntax-type." The expression "((if #t and or)" #t #f)" should evaluate to #f, but instead I am getting the error "source expression failed to match any pattern in form and." Unless of course it is a feature...
<MoronicAcid>Are macros not first-order citizens?
<davexunit>MoronicAcid: that is correct
<davexunit>'and' is not valid syntax
<davexunit>nor is 'or'
***holomorp1 is now known as holomorph
<rlb>paroneayea: wrt shell generation, possibly interesting (think maybe joeyh got tired of shell complexity): https://joeyh.name/blog/entry/shell_monad/
<rlb>Not sure if he's using that in git-annex and/or propellor.
<rlb>paroneayea, davexunit: I was curious recently, and yes, rustc can be used without the packaging infrastructure (i.e. as a gcc-ish compiler), though it's not "normal", and it can generate shared libs that look just like C libs (at least as far as my toy example went).
<rlb>There's also a flag you need to specify to avoid including the kitchen sink in the shared lib iirc.
<rlb>davexunit: also, I was reading the new (gnu) make book the other day and was reminded just how tricky it can be (and how hard to do some simple things cleanly/safely), but that said, I have yet to find anything I'd recommend as an alternative.
<rlb>OrangeShark: so in the fwiw category, a few weeks or so ago, I sat down and added support for libgit2 to bup, assuming that at a minimum, for simple git operations, it'd be much faster than bup's current aproach which uses a "CatPipe" to talk to a "git cat-file" subprocess. First pass, that turned out to be a complete waste of time. The current approach, even with encoding/decoding over the pipe was *much* faster than using libgit2.
<rlb>I think I even tried to batch some of the work on the C side and keep the bulk data as C pointers (so the C <-> python traversal wouldn't slow things down), but it didn't help.
<rlb>OrangeShark: that's not to say it won't be faster for you and your cases, but just thought I'd mention it.
<rlb>OrangeShark: and I can think of a number of reasons why that might have been the case for bup, but the difference was still surprising.
<zv>Hi guys, does anyone know how guile fetches it's 'extensions' or libraries? I have to manually set LD_LIBRARY_PATH=.../guile/extensions - is there any way I can do this without modifying my linker's configuration?
<janneke>hi!
<janneke>ACTION resent reproducible-.go mail to debbugs where it belongs
<janneke>hope that's better :-)
<amz3>héllo
<zv>hello
<lluis>hi! I'm overloading some arithmetic and bitwise procedures to seamlessly work with a class I have. It works for '+' and 'quotient', but if I define generic methods for 'logand' or 'ash', I get an error during auto-compilation ("ERROR: #<procedure ash (_ _)> is not a valid generic function"), but still works. Any ideas why?
<ArneBab>lluis: did you (define-generic ash)?
<davexunit>rlb: I have similar feelings. autotools are bad but leaps and bounds better than anything else.
<lluis>ArnenBab: that did the trick, thanks. I guess it's because some other module already define-generic'd the other functions I'm overloading
<ArneBab>lluis: nice
<dsmith-work>Thursday Greetings, Guilers
<amz3>héllo all
<OrangeShark>hello amz3
<amz3>hi OrangeShark I saw your message too late yesterday, got into meeting all the day
<OrangeShark>it is alright
<OrangeShark>I added some stuff for our gitweb replacement
<amz3>OrangeShark: Have you seen what I've pushed, it seems it overlaps with your code
<OrangeShark>I am not sure how we should allow configuration for it.
<OrangeShark>ah, I must of missed the git web module
<amz3>no worries
<amz3>Don't forget to add the header text to new files
<amz3>I changed the licence to GPL3+ as we agreed previously
<OrangeShark>alright
<amz3>OrangeShark: what configurations?
<amz3>what kind of configuration you are thinking about?
<OrangeShark>well how in gitweb and other git web interfaces allow you to choose the location of repos, descriptions, etc
<amz3>the thing is that gitweb can't take arguments, but our gitweb can take arguments
<amz3>I was thinking about passing arguments like regular cli
<OrangeShark>hmm ok
<amz3>you don't seem convinced
<OrangeShark>it could potentially be a lot of arguments depending on how configurable it would be
<amz3>I think we should start small, so we don't have arguments yet
<amz3>and honestly I don't find the gitweb options very useful
<OrangeShark>okay
<amz3>I mean the only one that seems very important to me right now, is specifying the location of git repos
<amz3>did you have a look at the mockup I made?
<OrangeShark>yeah
<OrangeShark>I might prefer a lighter theme though :P
<amz3>wdyt?
<amz3>lighter like a white theme?
<amz3>lighter means a white theme?
<OrangeShark>well it doesn't have to be white
<rlb>davexunit: yeah, the whitespace hacks like $(sp) come to mind, as an example, though there were some bits in the book that I'd no remotely considered.
<rlb>s/no/not even/
<rlb>daviid: btw, I realized my while loop was close, but a little different: time while GUILE_LOAD_PATH=. ./guile-test tests/00-initial-env.test tests/00-repl-server.test; do :; done
<rlb>daviid: and I forgot to mention that I commented out the second test in that file, which I suppose could affect timing.
<rlb>(if it's timing related)
<rlb>i.e. commented out the "HTTP inter-protocol attack" test.
<rlb>Also, on the buildd's it'll be testing current debian sid, and the machine I'm testing on is probably part stretch, part sid, but no idea if that matters.
<rlb>daviid: and were you testing in a vm or native? I suppose if it is timing related, that might matter too...
<daviid>rlb: I did not even looked at the test code, I merely dud run it here to see if I could reproduce, and I can not
<daviid>rlb: native
<daviid>rlb: linux capac 4.7.0-1-amd64 #1 SMP Debian 4.7.6-1 (2016-10-07) x86_64 GNU/Linux
<daviid>rlb: can you try this instead: while ./check-guile 00-repl-server.test ; do : ; done
<daviid>rlb: have to go, be back later
<zv>Hey guys, is there a method to that gives '((a 1) b (c 6) (d 5)) => '(a b c d) that is not just (map (lambda (elt) (if (list? elt) (car elt) elt)))
<zv>or is there a name for this idea that you want to omit 'configuration' for certain elements and still specify it for others?
<dsmith-work>zv: Like default values for arguments?
<zv>Similar idea, but this is for lists rather than #:optional arguments
<dsmith-work>I've never heard of anything like that. (Don't mean much though)
<dsmith-work>zv: Have you ever looked at match ?
<zv>yes
<dsmith-work>ok
<zv>My question is really "Is this an established pattern for which there are functions for dealing with it ala alists"
<zv>When I say "ala alists", I don't mean *exactly like* alists, I just mean do there exist functions for the set of useful things that you'd want to do on such a 'datastructure'
<dsmith-work>Nope. Sounds more lispy than schemey
<dsmith-work>zv: By that I mean is sounds like something CL might have.
<zv>Well, they say you should just ask your real question when you ask, so here's my real question:
<zv>I have a function & macro right now to make Chapter 5 of SICP a little simpler
<zv>here's how it looks:
<zv>(define-register-machine newtons
<zv> #:registers (x guess)
<zv> #:ops ((good-enough ,newton/good-enough?)
<zv> (improve ,newton/improve))
<zv> #:assembly ((assign guess (const 1.0))
<zv> improve
<zv> (test (op good-enough) (reg guess) (reg x))
<zv> (branch (label end-newton))
<zv> (assign guess (op improve) (reg guess) (reg x))
<zv> (goto (label improve))
<zv> end-newton
<zv>)0
<zv>After this, I have to initialize the registers and start the 'virtual machine'. I would like registers to take something like '((x 6) guess), and then initialized x to 6 and leave guess untouched, in turn I would like ops to take something like '(+ < > = (improve newton/improve)), i.e assuming that the 'primitive' function is identical to the symbol passed unless otherwise specified
<zv>This makes life a bunch simpler for me, because I've swapped out a bunch of guile code with C code *AND* I'm using guile-ncurses (and I've already 'committed' to setting %initscr *before* these registers machines are created, so I dont want to leave the UI hanging)
<artyom-poptsov1>Hello Guilers,
<artyom-poptsov1>I recently started hacking on iCalendar (RFC 5545) format parser for Guile called Guile-ICS.
<artyom-poptsov1>Probably the project could be of some use for someone besides me: https://github.com/artyom-poptsov/guile-ics
<artyom-poptsov1>I'd love to hear any feedback, or you may just ignore this message as Guile-Spam. ;-)
<paroneayea>artyom-poptsov1: nothing wrong with dropping by and showing your project!
<artyom-poptsov1>paroneayea: OK, I'll take this advice in account next time. :-)
<artyom-poptsov1>Besides, does anyone work on porting propagators framework (https://groups.csail.mit.edu/mac/users/gjs/propagators/) on GNU Guile?
<artyom-poptsov1>I did some search on the internet and found implementations for Python and Elixir, but none for Guile.
<paroneayea>artyom-poptsov1: I've looked at it but haven't used it. I'd like to try out the mit scheme version
<paroneayea>I've considered porting it but it's unrealistic that I actually would
<artyom-poptsov1>paroneayea: I see.
<artyom-poptsov1>I only tried to run very simple examples with MIT implementation.
<artyom-poptsov1>I wonder what it takes to implement propagators in GNU Guile.
<artyom-poptsov1>After making my way through the Alexey's and Sussman's paper and looking into their implementation, I have a feeling that this task may be quite hard to solve.
<artyom-poptsov1>And no doublt there's lots of work put in this paper and the framework itself.
<paroneayea>artyom-poptsov1: I'm not sure, it doesn't look like it would be hard to solve in guile?
<paroneayea>I think it's a lot of "lambda glue", and lambda glue can be done in guile
<artyom-poptsov1>paroneayea: Hmm, you're probably right. Anyway, it's hard to estimate complexity of the task for me for due to lack of related experience.
<artyom-poptsov1>There's an idea that bothers me quite a while: AFAIU propagators may be distributed over a network,
<artyom-poptsov1>so it may be possible to connect them using SSH protocol and probably some kind of RPCs over it.
<paroneayea>artyom-poptsov1: sure; I think you could take a message passing approach to hook them together.
<paroneayea>artyom-poptsov1: btw SICP has a kind of proto-propagators in it
<paroneayea>artyom-poptsov1: and if you really want to learn more
<paroneayea>artyom-poptsov1: http://groups.csail.mit.edu/mac/users/gjs/6.945/ some of the programming assignments for this go into propagators in significant detail
<artyom-poptsov1>paroneayea: Thanks.