Today I am pleased to announce Beatrice, which is a finally tagless, dependently typed, self-aware functional programming language that I have been working on for quite a while. In this short blog post, I will demonstrate its most prominent features and contrast them to those of mainstream programming languages.

The “self-aware” is referring to homoiconicity:

Beatrice can represent its typed abstract syntax within itself. This allows us to manipulate Beatrice programs within Beatrice.

GitHub

Longer overview