Try March in your browser

The playground below runs a full March interpreter compiled to WebAssembly-friendly JavaScript via js_of_ocaml. No install, no account — just type and run.

march repl
March REPL — type an expression and press Enter.
march>
errors →

Try it live

Type March expressions directly in the terminal. Definitions persist across inputs — define a function, then call it.

Press Enter to evaluate. Use Shift+Enter for multi-line input. / cycles history.

Type :reset to clear the session and start fresh.

No install needed — the interpreter runs entirely in your browser.


What you can try

Arithmetic and strings

1 + 2 * 3
"hello, " ++ "world"

Let bindings and functions

let double = fn x -> x * 2
double(21)

Pattern matching

type Shape = Circle(Float) | Rect(Float, Float)

let area = fn s ->
  match s do
    Circle(r)    -> 3.14159 *. r *. r
    Rect(w, h)   -> w *. h
  end

area(Circle(5.0))

Standard library

List.map([1, 2, 3, 4, 5], fn x -> x * x)
List.filter(List.range(1, 20), fn x -> x % 2 == 0)

Multi-line input: press Shift+Enter to add a new line, Enter to run.


Limitations

The browser playground runs the March interpreter (tree-walking eval), not the compiled native backend. A few things work differently:

  • No file I/O, no HTTP server, no Unix processes
  • No LLVM compilation / native performance
  • Actor spawn runs synchronously (no scheduler)
  • Standard library modules loaded: prelude, option, result, list, map, set, array, math, string, sort, seq, enum, random, json, and a few others

For the full language including actors, supervision trees, session types, and native compilation, see Installation.