trivial compiler and interpreter
tried to write a quickcheck instance, but failed