Getting started
The shortest route into Alpha is to write one complete module, ask the checker what it means, and keep the evidence boundary in view. The browser workbench uses the real repository-built compiler in a networkless, read-only sandbox. It checks source and reference-normalizes main; it does not claim native or physical execution.
Try a complete module
Open the REPL, keep the default example, and choose Check & evaluate.
module Playground.Main
def identity : (pi unrestricted value : Nat . Nat) =
(lambda unrestricted value : Nat . value)
def main : Nat =
(app identity (succ zero))
The important parts are already visible:
Natis a type andzerois a value;piis a dependent function type;lambdaintroduces a function;unrestrictedpermits any number of runtime uses; andmainis the expression the workbench asks the reference evaluator to normalize.
Read the result correctly
The workbench runs two separate phases:
alpha checkparses, resolves, elaborates, and checks types, quantities, effects, and totality.alpha replloads the same module and reference-normalizesmain.
A green result means those two named operations passed for the shown compiler identity and edition. It does not mean the module was lowered to native code, run on a GPU, self-hosted by the current compiler generation, or physically attested.
Work locally
From a checkout of thomasdavis/alpha:
cd bootstrap/haskell
cabal build alpha-compiler:exe:alpha
ALPHA="$(cabal list-bin alpha-compiler:exe:alpha)"
cd ../..
"$ALPHA" version --json
"$ALPHA" check --root Your.Module
"$ALPHA" repl --root Your.Module
Run the executable from a directory containing alpha.project so module roots, packages, edition, and cache policy are explicit.
Where to go next
- Learn the surface and the design rationale in the Language guide.
- Understand indexed data in Families and branches.
- Keep the generated Grammar beside source.
- Treat the Specification as normative when prose disagrees.
- Look up stable failures in Diagnostics.