Although I am not the creator of it, I am a frequent contributor to Pyret [0], (I'm the error message czar, and prototyped the language support for tabular data).
Beyond that: Writing an interpreter is typically the first thing I do when I am trying to pick up a new language.
To anyone interested in learning how to design and implement a programming language, I highly recommend the 2015 offering of Brown's "Programming Languages" [1]. Implementing type inference was a revelation for me! The starter code is supplied in Pyret, but the material isn't language-dependent; the assignments can be implemented in any language.
Beyond that: Writing an interpreter is typically the first thing I do when I am trying to pick up a new language.
To anyone interested in learning how to design and implement a programming language, I highly recommend the 2015 offering of Brown's "Programming Languages" [1]. Implementing type inference was a revelation for me! The starter code is supplied in Pyret, but the material isn't language-dependent; the assignments can be implemented in any language.
[0] http://www.pyret.org/ [1] http://cs.brown.edu/courses/cs173/2015/assignments.html