I have attached a tiny parser and lexer. 

This is really key to getting the lexing correct.

The only thing I could not get neatly was to disallow hyphens at the end of identifiers, so have left it off until a good solution arrives.

I plan to move over to monads next.

Any comments welcome,

Aaron