Imperative languages are usually weakly typed
The easiest imperative languages to write are often dynamic or loosely typed. They move quickly early, but type issues surface later and are harder to reason about at scale.
Design Rationale
Jot exists because there are few good imperative languages that stay easy to use while also offering the kind of strict, inference-driven type system associated with OCaml and ML languages.
The easiest imperative languages to write are often dynamic or loosely typed. They move quickly early, but type issues surface later and are harder to reason about at scale.
Languages in the ML family show how effective Hindley-Milner style typing can be. But many teams still want a straightforward imperative model for day-to-day code.
The target is simple: keep imperative code easy to write while retaining strict static checks and inference quality associated with OCaml and other ML-style systems.
Why Truffle
Jot uses Hindley-Milner style inference for static checking, but execution behavior still depends on real program paths. Truffle is used to adapt at runtime rather than forcing one fixed optimization strategy up front.
Design Principles
Non-goals
Next
Jot is still early. The docs and source are the best place to evaluate what already works and what is still in progress.