Writing interpreters in Kotlin