define works, a few tests for define,

NB you can't print out a recursive data structure!
TODO custom exceptions
assignment and test for assignment