Click "Run" to see the handlers execute live.
typelang is a strict functional subset of TypeScript with algebraic effects, enforced purity, and zero runtime errors. Build reliable software with effect tracking and exhaustive pattern matching.
// Counter with Console + State
const tick = () =>
seq()
.let(() => State.get<{count: number}>())
.let((s) => ({count: s.count + 1}))
.do((next) => Console.op.log(`Count: ${next.count}`))
.do((next) => State.put(next))
.return((next) => next.count);
Click "Run" to see the handlers execute live.
Three core principles for reliable software
All side effects visible in function signatures. No surprises.
Pattern matching and Result types eliminate exceptions.
Subset linter prevents mutations, loops, and if/else.
Choose your path based on your experience level
Explore interactive demos, try the playground, or dive into the comprehensive guide.
Explore Demos