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

# Install monadup (the Monad-written toolchain manager) curl -fsSL https://monad-lang.org/install | bash export PATH="$HOME/.monad/bin:$PATH" # Install the latest nightly, check the toolchain, start a project monadup default monadup doctor monadup new hello cd hello && monad run .

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.