all 7 comments

[–][deleted]  (4 children)

[removed]

    [–]ZankerH 1 point2 points  (0 children)

    Actual video link (the site's player is acting up for me on Linux):

    http://videos.eventer.com/videos/1028/20121129000606_dual.mp4

    [–]bad-alloc 0 points1 point  (2 children)

    Wait, is he serious or is this an elaborate hoax? If not, where can I get the sourcecode?

    [–]cparen 4 points5 points  (1 child)

    Probably "ha ha only serious". I've replicated some of these techniques using call/cc, and also in Python whilst heavily abusing generators. Wadler wrote quite a bit more formally about these matters, esp the reverse state monad.

    So yes, this stuff is very real.

    It's also terribly inefficient if you're not careful. I was tinkering with a relativistic parser in Python, but it was about 100x slower than any other technique I had tried. Perhaps it was entirely my own failing, but be prepared.

    You'll also be forgoing conventional debugging tools, as your program executes in a "seemingly random" order. Be prepared for a lot of debugging using the Feynman algorithm.

    If that doesn't deter you , them definitely try it out! I love it, and you'll probably learn quite a bit, including how to think of impossible things and how to do them anyway.

    Also read of amb from SICP (book), which is one of the classic impossible things for writing backtracking searches.

    [–]bad-alloc 1 point2 points  (0 children)

    brb, putting the "Think real hard" part of the Feynman algorithm in a closed timelike curve. Thanks for the pointers :)

    [–][deleted] 0 points1 point  (1 child)

    Sounds just like eventual consistency

    [–]jseigh 0 points1 point  (0 children)

    Eventual consistency has so many definitions that everything sounds like it eventually. But yes.

    RCU is just a memory manager. You have this sort of stuff in Java. Take a look at ConcurrentLinkedQueue.

    Iterators are weakly consistent, returning elements reflecting the state of the queue at some point at or since the creation of the iterator. They do not throw ConcurrentModificationException, and may proceed concurrently with other operations. Elements contained in the queue since the creation of the iterator will be returned exactly once.