writing an interpreter in go