Abstractivity

As you may noticed already, all primitives in Я are just wrappers over more basic types (Arrow/Product/Sum). It makes type errors look monstrous.

General purpose

Since you should be able to use Я in any domain areas, I have tried my best to keep types/expressions namespace as tiny as possible.

You will not find a function to get an nth element of a list.

Compositionality

The main goal of this project was to make language primitives to compose to each other at extreme level. It would be hard for you to use this feature without understanding theoretical fundamentals.

Adventure time!

My research on solving everyday engineering tasks using abstract algebra is still going. You probably will not get answers on how to solve a problem that was solved in other programming languages a long time ago.

However, I can promise you, if you understand how Я works you will get a completely new perspective on computations. Even learning this language should be rewarding.