Today I more or less got stuck writing, or rather updating, documentation. It is a slow, grinding, maddening, thankless task, more concerned with the details of page layout (to bold or not to bold; that is the question. Whether 'tis nobler to suffer the look of undecorated text upon mine eyes, or...) than with any genuine content. So, the Mad Computer Scientist, in an effort to remain sane or, perhaps more accurately, to remain insane in the same way and at the same level as before (i.e. no Uzi mania today), has taken to the safe haven of compiler R&D in between bouts of homicidal fantasies about users (as it requires no level of intelligence to work on documentation; indeed, the ability to shut the brain down would make the task easier). I have been reading Guy Steele's paper on RABBIT, a Scheme compiler written in MacLISP.

There is a gap between functional and semi-functional languages (ala Scheme, ML, Haskell, and LISP) and procedural ones (like C, C++, C#, Java, VB, etc.). While most people who used procedural languages first have a difficult time wrapping their brains around functional programming (hereafter to be often abbreviated to FP) the first time around, it actually offers a great deal more flexibility than procedural languages. The world, however, is fraught with procedural languages and, at their core, the computers we use every day are procedural. Ultimately, in sheer pragmatic terms, whether directly or through an intermediary, FP must be translated into the more rigid procedural model.

As I get closer to having a design worth implementing (which I should get to soon; macros are almost ready), I'll post the implementation plan here.