[plt-scheme] slides src for ICFP talk (on delimited continuations)
Several people requested the source of the talk I gave last week, so
I've put it here, for now:
http://www.cs.utah.edu/~mflatt/tmp/icfp07-talk-src.zip
Some caveats:
1. You need the latest MrEd/Slideshow from SVN.
At the MrEd level, there's a new `set-alpha' method on dc<%>, which
I use for fade-in and fade-out animations. At the Slideshow level,
there are new `slide' variants that accept a timeout for advancing
the slide automatically. (Yes, Slideshow 4.0 will definitely use
keyword arguments.)
2. The implementation of animation amounts to a poor-man's FRP, I
think.
The animations are based on functions that each take a number and
produce a pict; an animation is created by varying the input number
from 0 (initial state) to 1 (ending state). A timeout is attached
to each of the intermediate slides.
Each animation is usually just one step in a larger sequence. For
example, when showing the evaluation of an expression, an automatic
animation corresponds to an individual reduction, and many such
animations are chained together (with a manually advanced slide at
each reduction step) for the overall evaluation. Such a sequence is
implemented by a function that takes N numbers between [0,1] to
produce a pict; the inputs all start at 0, and then each input goes
from 0 to 1, in turn, for each little animation.
I'm not sure what the implementation would look like using FrTime.
I think it would look similar, but with better language support.
(The FrTime variant of Slideshow isn't available at the moment, or
I would have tried it for the talk.)
3. The talk implementation is low-quality code.
I cleaned it up a bit, and I added some implementation notes in
"chain.ss", but it will be obvious that the code was written in a
hurry.
The most interesting part is the beginning of "chain.ss", which has
some animation tools and combinators that will likely find their
way into a library, eventually.
4. Running the talk uses around 200 MB of RAM.
There are 1028 individual slides, with a lot of redundant and data
behind a lot of those slides. For my purposes, 200 MB was small
enough.
Matthew