Starting bottom up: bind method of merging two SSA contexts. Been here before, and found it awful! The trouble is mainly that variable names need to be merged. dspm stuff used state continuation monad. I don't remember exactly why, but it's probably what this one needs.. It uses the continuation monad for let insertions. What is the state part for?