Я (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.
Source code ⋅ YouTube screencasts ⋅ Twitter account
- Principles: quick review on what you would expect from this project.
- Articles: the collection of slow readings with a deep-dive explanations on some topics of Я.
- Snippets: short answers to the question “How do I do X in Я?” before you get into serious stuff.
- Tutorials: step-by-step you will learn how to adopt complexity on examples from numerous domain areas.
- Roastings: not just blantly criticize others but rather show alternative approach for problem solving.
- Packages: bbviously, 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.