the 187 skillz
Been playing with modular monadic interpreters
and compilers
recently. The monad keeners are
really clever: the idea
is to separate out "facets" of a language processor (a la
action semantics) into separate monads, such that (if
you get the liftings right) you can do a modular proof of
your rewrite semantics for that facet irrespective of the
other facets you may have enabled. This is cool: you can
develop a working call/cc
system or lambda abstraction or
calling convention in isolation, test it out, then
just sorta graft it into an existing compiler / interpreter.
The math gets a little ghastly but it's miles better than
plain denotational semantics.
Monads
are one of those things like pointers or closures.
You bang your head against them for a year or two, then one
day your brain's resistance to the concept just
breaks, and in its new broken state they make
perfect sense. I've only constructed a UA
parser and 2-level
interpreter at the
moment but the fact that I
could do so in a couple pages of haskell is rather amazing.
Parsec
makes Bison
look like a sad joke.
er, um. otherwise I've been on vacation. watched a lot of
television, ate a lot of
waffles, and read a
lot of ACL2
examples. went for walks in the snow with frances,
played with baby rissa, slept, perused the various available
open cores, listings
for FPGA's on PCI cards (and DIMMS!) read up on current
leftist media and
browsed the
libstdc++ design notes.