/ lamdu Public
0.7: First release!
yairchu released this
24 Oct 19:14
· 2396 commits to master since this release
Initial release of Lamdu, including 7 key features:
- WYTIWYS projectional editing. Projectional editing ensures that syntax errors and name errors are impossible to make, while the What-You-Type-Is-What-You-See text-like interface makes the experience intuitive and familiar. Note that this concept isn't unique to Lamdu - MPS also implements a mostly WYTIWYS approach.
- A novel UI framework for keyboard oriented editing of rich structured data, with responsive layout (the code's layout adapts to the screen or window's width) and animations for structural edits (making changes easier to follow).
- Live-reloading for pure computations. Lamdu employs a distinction between pure computations and effectful code, like Haskell, and uses this distinction to enable safe live programming, which performs live-reloading only for pure computations, while requiring an explicit action to execute effectful programs.
- Live programming with value annotations displayed under subexpressions (rather than only a single REPL result). Note that Flogo 2 appears to be the first project to come up with this notation.
- A novel approach for type-errors: When filling a hole with a term with a mismatching type, it is wrapped in a "fragment" (aka non-empty hole), so that type inference keeps working continuously everywhere.
- A novel decentralized solution for cross-module blame assignment for type errors. For every definition, Lamdu remembers the types for all of its dependencies. When a dependency's type changes, type inference still works with the saved type, with an "update" action offered for the type-mismatch.
- Projectional Syntactic Sugar. The lower-level AST, which we call "Lamdu Calculus", is checked for patterns which are sugared. Sugaring happens automatically, reducing burdens of choice and manual conversion between equivalent syntax forms when making changes.