Ok, I'm starting to see. So the code in each branch binds all variables upto that point?
When I see:
first first
I'm inclined to read this as, "if you just see a variable (call it first) and nothing else after, just return first." I imagine the evaluation going to the next case and saying[1], "oops, nothing left, ok, go back and execute code for the previous case." Am I on the right track? Hmm, I've never seen anything like this.
And the nil is a branch with an empty 'guard'. Ahhhh.. this is cool :)