Skip to content
Noodle
InstallLearnPlayground
GitHub

Noodle — a statically typed language that scales

Simple and practical,
yet uncompromisingly efficient.

Noodle is a statically typed language with automatic memory management — built for rapid development and confident refactoring.

  • Static types
  • Typeclasses
  • Independent modules
leetcode_258_add_digits.nl
datatype DigitView extensions DigitViewForInt  Zero  More(Int, Int)end extension DigitViewForInt : IView for DigitView  type Target = Int  func view(value : Int) -> DigitView do    if value == 0 then DigitView::Zero    else DigitView::More(value % 10, value / 10) end  endend func add_digits(num : Int) -> Int do  switch num  case DigitView::Zero then 0  case DigitView::More(digit, 0) then digit  case DigitView::More(digit, rest) then add_digits(digit + rest)  endend

Designed for code that lasts.

The language shapes the programs you keep: explicit types, visible control flow, and capabilities that arrive without boilerplate.

Clear for humans. Easy for AI.

Keyword-closed blocks, explicit type boundaries, and no implicit conversions keep code predictable to read — so an AI model can start from existing code with no special training.Deeper mechanisms, like associated extensions, still take a hint.

if n <= 1 then n else fib(n - 1) end

Powerful pattern matching

Nested records, tuples, and views decompose in place — match by shape, not by boilerplate. And every switch is exhaustive, so a missed case fails the build, not the runtime.

case DigitView::More(digit, 0) then digit

Typeclasses that compile away

Interfaces such as ICompare live in the type system, not in the runtime. Generic functions stay generic, every module compiles in isolation, and whole-program optimization is on the roadmap.

?{extension Compare : ICompare for T}

Structural capabilities, for free

Equality, ordering, hashing, and debug output come free for records, tuples, and datatypes — and every capability is an interface you can override. Checked and specialized at compile time, they beat the runtime deep-equality dynamic languages hand you.

Prelude.structural_equal(first, second)

Try in seconds,
no install needed.

A VS Code workbench backed by a rich language server — live diagnostics and navigation at local latency, with the full noodle CLI in an integrated terminal panel. Ready the moment the tab opens — nothing to install, nothing to configure.

  • WorkbenchA VS Code editor, ready in the tab.
  • LSPLive diagnostics, navigation, and analysis as you type.
  • CLIThe full noodle CLI — check, test, run — in an integrated terminal panel.

Easy to learn.
Hard to outgrow.

Pick up the essentials in minutes — then follow the steps as deep as your design needs.

  1. 01Write your first program Start hereCheck, run, and test one source file without package configuration.
  2. 02Learn the language basicsWrite useful programs with types, functions, control flow, data, and modules.
  3. 03Reach for advanced featuresReach for generics, interfaces, and advanced patterns when your design needs them.
  4. 04Use the standard libraryWork with collections, text, JSON, debugging, and tests.