Replaced eval with recursive function
Fixed order of !

Also moved tests to use word and ! instead of js! as part of move
towards seamless JavaScript interop