Guide¶
MakrellTS brings Makrell into the JavaScript and TypeScript ecosystem without giving up the family feel.
Core themes¶
expressions and calls
collections and data flow
interop with JavaScript and TypeScript APIs
browser and Node.js usage
macros and serialised compile-time definitions where applicable
Everyday MakrellTS shape¶
MakrellTS aims to feel recognisably Makrell first, and JavaScript/TypeScript-aware second.
That means the familiar family ideas should still be central:
a = 2
b = a + 3
[a b 5] | sum
{fun add [x y]
x + y}
{match a
2 "two"
_ "other"}
In practice, MakrellTS is most useful when these familiar Makrell forms can be used while still fitting naturally into JS/TS projects.
TypeScript-oriented flavour¶
MakrellTS also explores a typed surface aligned with the TypeScript world.
Example:
Point = {class Point
{fun __init__ [self x:number y:number]
self.x = x
self.y = y}}
p:Point = {new Point [2 3]}
mode:"option1" | "option2" = "option1"
Interop direction¶
The real value of MakrellTS is not just that it can mimic family syntax. It is that it can bring Makrell ideas into environments where people already work:
Node.js tools
browser runtimes
TypeScript-heavy codebases
module-based JavaScript workflows
This is why the docs for MakrellTS should eventually emphasise:
running source through the CLI
emitted JavaScript
browser examples
import and runtime model details
Practical next pages¶
After this guide page, the most useful follow-ups are: