Use internal definition instead of letrec
move irrelevant definition `make-obj` outside
update language spec
prelude rename and new functions
modify language spec; unit is now ()
',[var ..]' match the rest (as a list)