Я (pronounced as “ya”) provides a new programming experience to design complex control flows. It brings elements of visual programming embedded in text interface coupled with powerful type inference so you can create very compact and readable code at the same time.
-
Openness: In contrast of encapsulation, Я encourages you to use open interfaces. In my opinion one of the main source of complexity is actually the habit to hide things from users. Instead we shoud see how objects are related to each other in order to come with an idea redefining things in a more suitable way.
-
Tutorials: Step-by-step you will learn how to adopt complexity on examples from numerous domain areas.
-
Packages: Obviously, there are not many packages that use Я for now, but it’s not for long! (I hope)
-
Updates: There are several ways you can stay tured, get involved in development or even support my work!
-
Operators in Я is actually a unified system of composable tokens that let you read the code naturally.
-
Effects: it’s an essential part of Я that help to focus on things that matter for us and abstract out of computation details.
-
Subtyping: gives you an ability to reuse expressions without explicit type conversions.
-
Primitives are liquid: these are just type aliases for either basic types (Arrow/Product/Sum) or wrappers over the latter.
-
Methods: I’ve tried to keep a set of predefined expressions as small as possible.
-
Trade-offs: Notes of decisions taken on designing stage.
-
Glossary: Mostly theoretical definitions that you cannot skip in order to reason about control flow.
-
Credits: As many engineers, I’m standing on the shoulders of giants.
-
Why: Here I explain why I have started this project and kept it going for almost 5 years.