I teach Theory of Programing Languages (page in Slovene). For the course I implemented languages which demonstrate basic concepts such as parsing, type checking, type inference, dynamic types, evaluation strategies, and compilation. My teaching assistant Iztok Kavkler contributed to the source code as well. I decided to publish the source code as a Programming Language Zoo for anyone who wants to know more about design and implementation of programming languages.
The languages are not meant to compete in speed or complexity with their bigger cousins from the real world. On the contrary, they are deliberately very simple, as each language introduces only one or two new basic ideas. You should find the source code useful if you want to learn the basics.
It takes time to clean up the code and translate it from Slovene to English, so I am starting with just three languages:
- calc – a simple calculator
- miniml – eager purely functional language
- minihaskell – lazy purely functional language
I have many more in store: a polymorphic functional language, an imperative language, a language with record subtyping, an object-oriented language, miniScheme, and miniProlog. I will eventually clean up the source code and publish it in the PL Zoo. In the future I would like to add other languages, as well as demonstrate a variety of compilation and optimization techniques.
All langauges are implemented in Ocaml.
You are welcome to ask questions and discuss the languages on this blog.