| Post Reply | RetroFed Forum Forum Index » Programming Languages |
| Author | Message | ||
|---|---|---|---|
|
arthur
lemmy.zip
arthur@lemmy.zip Joined: 2023-06-12 |
I think most of my comments and error messages are written in Portuguese, but this is only a prototype, so please ignore that. Kata manages memory with per-fiber bump arenas backed by structured concurrency — no garbage collector, no borrow checker, no reference counting; escape analysis decides at compile time whether each value stays local or escapes to the caller's arena, and ; in actions distinguishes "local computation" from "value that escapes." Refined types (data (Int, > _ 0) as PositiveInt) carry logical predicates validated at compile time, participate in multiple dispatch, and can delegate interface implementations to their base type through refines — a fallback mechanism with no equivalent in Rust or Haskell. The pure/impure boundary is not a monad you thread through your code — functions (lambda) and actions (action) are separate syntactic domains with their own structural rules, enforced at compile time; where Haskell tracks purity through IO as a type-level effect, Kata makes it a property of the syntax you write. Memory • Kata: Per-fiber bump arenas + escape analysis; no GC, no borrow checker • Python: Refcounting + cycle GC • Haskell: Tracing GC • Rust: Ownership + borrow checker Refined types • Kata: data (Int, > _ 0) as PositiveInt — predicates validated at compile time, participate in dispatch, refines delegates interfaces to base • Python: Not available • Haskell: Liquid Haskell (external plugin, not core) • Rust: Not available Purity • Kata: Physical barrier: separate syntax, operators, structural rules • Python: Not enforced • Haskell: Monadic IO (type-level effect) • Rust: Not enforced Conditionals • Kata: Pattern matching + guards (exhaustiveness enforced) • Python: if/elif/else • Haskell: if + pattern matching • Rust: if + match Backend • Python: CPython interpreter • Haskell: GHC (LLVM/native) • Rust: LLVM (native) The repo is at github.com/ArthurJ/Kata — build with cargo build, then try kata repl, kata run examples/, or kata test. I'd love feedback on the language design: what feels right, what feels wrong, what you'd do differently.
|
||
| 8 Original | |||
| Post Reply |
Back to top |