Mathematics and Computation

A blog about mathematics for computers

The Programming Languages Zoo

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:

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.


I have added a boa to the zoo. It is an object-oriented language.

How to comment on this blog: At present comments are disabled because the relevant script died. If you comment on this post on Mastodon and mention, I will gladly respond. You are also welcome to contact me directly.