Source code for the demonstrated Get Bonus game engine:
For anyone interested, I wrote a lens library for JavaScript a few days ago:
https://github.com/puffnfresh/fantasy-lenses
The first example can be written like so:
var locationX = location.andThen(x);
locationX.set(locationX.get() + 10);
Michael Greenberg also published a JavaScript lenses library back in 2007, as part of his thesis at the University of Pennsylvania:
http://www.cis.upenn.edu/~mgree/ugrad/lenses/docs/overview-summary-lens.js.html
It’s a bit dated now, to be sure, as there have since been many developments in the field of “bidirectional programming”. See, for example, Daniel Wagner’s paper on “Edit Lenses”:
I’ve just revised the gist, in case anyone is interested. I decided to decouple the sync and async variants as I had done originally, so that it’s hopefully a little easier to follow and play with.
The video starts off a tad slow as Perrin finds his legs, but at ~2:30 the pace picks up and he begins to demonstrate the amazing tool he’s been developing.
If you jump to 11:52, you’ll see a neat demo that shows off the engine’s performance: 70,000 spheres (ray traced on the card), 500 lights, at 60 frames per second. Great stuff!
http://www.youtube.com/watch?v=t3xdv4UP9-U&t=11m52s
The source code is available on GitHub:
https://github.com/ntoronto/pict3d