IRC channel logs

2015-07-26.log

back to list of logs

<janneke>hi guilers!
<amz3>héllo
<stis>heya guilers!
<paron_remote>hello stis
<paron_remote>so who here has watched https://www.youtube.com/watch?v=eQL48qYDwp4 ? :)
<paron_remote>that "evalo" shit made my hair stand on end
<paron_remote> http://webyrd.net/research.pdf https://github.com/webyrd/polyconf-2015 maybe I should port this to guile
<mark_weaver>paron_remote: are you familiar with "The Reasoned Schemer" or with miniKanren?
<mark_weaver>it's probably related
<mark_weaver>and we already have it for guile
<mark_weaver>William Byrd was one of the authors of "The Reasoned Schemer", and the "o" suffix is also used in that book
<mark_weaver>oh yes, of course you know it, you packaged it for guix :)
<paron_remote>mark_weaver: yes
<paron_remote>mark_weaver: this is further stuff on top of that
<mark_weaver>ah, okay
<paron_remote>mark_weaver: new things that have been happening on top of that
<mark_weaver>I'll add that video to my queue :)
<paron_remote>mark_weaver: it's now possible to write stuff with "evalo" which is able to logically create certain programs
<paron_remote>mark_weaver: this is, by far, the most mind blowing talk I've ever watched
<paron_remote>mark_weaver: a lot of the stuff shown in that video is stuff apparently just happening in the last 6 months
<mark_weaver>very interesting!
<paron_remote>mark_weaver: for example, there's one part of the video where he took a program written in normal scheme (I think it was a theorem prover) and stripped out a part of it
<mark_weaver>I'll definitely check it out soon :)
<paron_remote>mark_weaver: and minikanren with evalo figured out what code could complete it
<mark_weaver>wow
<paron_remote>mark_weaver: cool :)
<mark_weaver>thanks for the pointer!
<paron_remote>mark_weaver: it also could define quines from a simple as (run (
<paron_remote>caar
<paron_remote>(
<paron_remote>run
<paron_remote>1
<paron_remote>(
<paron_remote>q
<paron_remote>) (
<paron_remote>eval
<paron_remote>o
<paron_remote>q q
<paron_remote>oh no
<paron_remote>I pasted code from a pdf
<paron_remote>never do that.
<paron_remote>(run 1 (q) (evalo q q))
<paron_remote>generates a quine
<paron_remote>but you can even have it generate a twine, two different programs which when evaluated print out each other
<paron_remote>or even a trine
<paron_remote>mark_weaver: anyway, this is all really interesting to me... I've been thinking about procedurally generated code and what it might mean for free software
<mark_weaver>great stuff!
<paron_remote>since google is now picking up on AI problems that haven't been touched since the AI winter...
<paron_remote>well not seriously :)
<paron_remote>I think we might soon see a drastic change to this space.
<paron_remote>mark_weaver: anyway yeah, watch it and read up!
<mark_weaver>I will. I find this style of programming very compelling
<paron_remote>mark_weaver: so that code repo linked above also has guile stuff
<paron_remote>mark_weaver: so you can run evalo apparently in guild
<paron_remote>guile
<paron_remote>mark_weaver: but the repo is a mess
<paron_remote>mark_weaver: still expat licensed though
<paron_remote>mark_weaver: maybe I should refactor or repackage for guile/guix
<paron_remote>mark_weaver: I'd love to play with evalo.
<paron_remote>ah!
<paron_remote>mark_weaver: I got "evalo" ~working
<mark_weaver>that's good!
<paron_remote>but the quine thing doesn't work in guile
<paron_remote>well, some of them do
<paron_remote>until it builds the cool expressions
<paron_remote>(((lambda (_.0) (list (list (quote lambda) (quote (_.0)) _.0) (list (quote quote) _.0))) (quote (list (list (quote lambda) (quote (_.0)) _.0) (list (quote quote) _.0)))) (=/= ((_.0 closure)) ((_.0 list)) ((_.0 quote))) (sym _.0))
<paron_remote>so this one doesn't work, for a simple reason
<paron_remote>ERROR: Syntax error:
<paron_remote>unknown location: quote: bad syntax in form quote
<paron_remote>it doesn't let you pass in quote
<paron_remote>in guile
<paron_remote>though it does in racket
<paron_remote>oh, it doesn't there either
<paron_remote>heyyyy what's going on here ;)
<mark_weaver>it's probably some subtle difference in the macro expander
<paron_remote>yeah
<paron_remote>anyway, cool stuff
<mark_weaver>paron_remote: that error message makes me suspect that there was a bare 'quote' used where an expression is expected.
<paron_remote>mark_weaver: yeah probably
<paron_remote>OH
<paron_remote>I just rewatched that talk
<paron_remote>he only used the car of that expression I pasted
<paron_remote>when he evaluated it
<paron_remote>((lambda (_.0) (list _.0 (list (quote quote) _.0))) (quote (lambda (_.0) (list _.0 (list (quote quote) _.0)))))
<paron_remote>sure enough, that's a quine!
<paron_remote>davexunit: guess what this is:
<paron_remote>((lambda (_.0) (list _.0 (list (quote quote) _.0))) (quote (lambda (_.0) (list _.0 (list (quote quote) _.0)))))
<davexunit>paron_remote: I accidentally cheated by looking at twitter before seeing this
<davexunit>it's a quine :)
<paron_remote>davexunit: yeah :)
<paron_remote>davexunit: run in guile!
<paron_remote>davexunit: however, not all examples work in guile currently
<davexunit>port port port
<paron_remote>davexunit: for example, some of them make sure that the generated code (=/= q quote) or whatever
<paron_remote>and quote gets immediately macroexpanded
<paron_remote>and that breaks
<paron_remote>or maybe it was absento or something
<paron_remote> http://webyrd.net/research.pdf https://github.com/webyrd/polyconf-2015 paper and git repo
<paron_remote>davexunit: updated for the talk. This DOES contain a guile-mk.scm
<paron_remote>and it's expat
<paron_remote>so free software
<paron_remote>so that worked with no porting on my part
<davexunit>oh wow
<davexunit>webyrd wrote guile compatibility code?
<davexunit>:)
<davexunit>wasn't sure he even knew our community existed.
<davexunit>since he's more on the commercial side of things in terms of the software he uses
<paron_remote>davexunit: well there is a .DS_STORE checked in there ;)
<paron_remote>davexunit: but yeah!
<stis>hello paron_remote: nice example.
<stis>hello paron_remote: nice!! Fun stuff.
<paron_remote>stis: :)
<stis>paron_remote: where did you find the sources?
<stis>I will try run it on guile-log, it has a very good kanren implementation (fast)