Monad is in active development (Alpha). Features and APIs may change. Not recommended for production use.
Monad logo

Monad

A purely functional, dependently typed systems programming language that compiles to native code through LLVM.

Alpha Self-hosting LLVM native
Get Started Read the Docs

Install with monadup

# Download and install the monadup tool curl -fsSL https://raw.githubusercontent.com/monad-lang/monad/main/scripts/monadup -o monadup chmod +x monadup ./monadup self-install export PATH="$HOME/.monad/bin:$PATH" # Install the latest nightly and set it active monadup default monad version

Why Monad?

Optimized for LLMs and AI

Monad's type system, compiler, syntax and tooling are designed to work well with AI coding assistants and automated development workflows.

In progress

Verifiable systems programming

A cubical type system that lets you prove programs are correct at compile time, not just test them.

In progress

LLVM and MLIR support

Compile to native binaries, GPUs, TPUs, and eventually QPUs through industry-standard compiler backends.

Future

Powerful macros and metaprogramming

Write code that writes code. Derive boilerplate, extend the language, and build domain-specific abstractions.

Available now

Quantitative types

Memory safety without a garbage collector, enforced at compile time through linear type annotations.

Future

General purpose and flexible

Compile to the web via WASM, build for any platform, from servers to embedded devices.

In progress

Hello, Monad

// A program is a native binary use std::io {} open IO {println} #[decreasing n] def factorial (n : I64) : I64 := if n == 0 then 1 else n * factorial (n - 1) def main (args : List String) : IO Unit := println (I64.to_string (factorial 5))

Join the Community

Monad is an open project. Come ask questions, share ideas, or contribute.