Made a couple of updates to the blog code, Google search was getting confused because all the pages link to the login page and it wasn't sure which one was "right". I've added a link header pointing at the return url, let's see if that makes it happier.

I've finished another couples of steps in mal-js, eval and environment, so (+ 1 2) now correctly evaluates to 3, and def! and let* special forms work. (I'm going to lose the funky characters once I'm done, although I could just edit the tests now. Hmm)

Using JS types directly didn't work (because a string value isn't an object, so one can't set arbitrary properties in it), so I've gone for a simple wrapper class with a (string) kind property (to tag the type) and a value property to hold a JS value.

It seems to be working so far, it's nice not to have the big stack of classes and worry if hash should extend sequence. (Having just written that, I'm idly thinking about adding an "isSeq" method, since the only difference between lists and vectors is the shape of the brackets when they're printed)

Mentally it was a rough day. I never really engaged with work (Y'know, I say that but I did deliver a product and refactored shared code into a library. I'm starting to think that my standards for 'good enough' may just be far to high. Husband, if/as/when you read this, you were right so along and I'm sorry for doubting you) and so I bailed an hour early.