Skip to Content
i documentation

Home

Learn i and find its language and library references.

i is a small, statically typed functional language that compiles to WebAssembly GC. It runs natively, in JavaScript hosts, and on WASI. It has no keywords: words are names, and forms use brackets and symbols. Values and bindings are immutable. Functions can need services, which callers provide with <-. Concurrency is structured, so a task does not outlive its scope.

This complete program prints a greeting:

src/main.i
(
	(Io) = i/io
)

main = () <- (io : Io) { io.print("Hello, i!") }
Hello, i!

Io is the standard service for input and output; the entry point receives it from the environment and calls print. See services and errors for how needs work.

The library reference describes modules, and the standard defines the language. i is in development; the compiler does not yet implement everything in the standard.

See also

Words and symbols · Install

On this page