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:
(
(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.
- Getting started covers installation, a first project, and editors.
- The tour introduces the language to programmers.
- Guides cover practical tasks.
- Contributing explains how to take part in development.
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.