AttaLambda is a small programming language built around a big question:
How much of a practical language can be made from pure lambda calculus?
Programs use familiar Lisp-shaped syntax, but ordinary computation expands to
only variables, one-argument lambdas, and function application. Racket supplies
lazy evaluation and module machinery; effects cross one explicit host
boundary.
This is a complete AttaLambda program:
#lang attalambda
(stdout "Hello from AttaLambda.\n")
AttaLambda 0.7.0 is available as a self-contained Linux x86-64 archive. It includes its own runtime, so you do not need to install Racket.
Release page: https://github.com/kserrec/attalambda/releases/tag/v0.7.0
Version 0.7.0 adds list, multi-parameter lambda, sequential multi-binding
let, and cond with a required final else. These four conveniences expand
to existing unary-lambda terms. Pure value rendering and print, exact rational
arithmetic, the complete List API, and the pure rec rules remain available.
The public API reference describes the complete surface, and
the acceptance record records source and published-archive
verification.
See the 0.7.0 release notes for syntax examples and compatibility.
Download, verify, extract, and run it:
curl -LO https://github.com/kserrec/attalambda/releases/download/v0.7.0/attalambda-0.7.0-linux-x86_64.tar.gz
curl -LO https://github.com/kserrec/attalambda/releases/download/v0.7.0/SHA256SUMS
sha256sum -c SHA256SUMS
tar -xzf attalambda-0.7.0-linux-x86_64.tar.gz
cd attalambda-0.7.0-linux-x86_64
./bin/attalambda --version
./bin/attalambda examples/hello.attl
You should see:
AttaLambda 0.7.0
Hello from AttaLambda.
Linux x86-64 is the only supported binary target. Users should not have to bypass operating-system security protections to try the language, so macOS builds without Apple signing and notarization and Windows builds without Authenticode signing are not distributed.
You need Racket. The install command registers the checkout in your user-level Racket package registry and does not require administrator access:
git clone https://github.com/kserrec/attalambda.git
cd attalambda
raco pkg install --auto --name attalambda .
racket runner/attalambda.rkt examples/hello.attl
AttaLambda has no third-party package dependencies. Its runtime dependencies
are Racket's base and lazy packages; tests also use rackunit-lib and
net-lib.
To run the complete test and structural-purity suite:
./run-all-tests.sh
-7/3 are ordinary
literals.Result; contract and representation failures use Error.The goal is not to hide Racket behind a new syntax. It is to make the boundary between lambda-calculus computation and host authority small, visible, and testable.
On this branch, (exit 0) reports successful completion and (exit 1) reports
unsuccessful completion. Only Rat 0 or 1 is accepted: another type returns
TypeMismatch Error; another Rat returns InvalidCount Error, without calling
the host. Pure AttaLambda chooses and validates the status; only the host
terminates the process. Exit prints nothing automatically and prevents later
effects. Without an exit call, normal completion remains status 0, even when
the program produces an Error or Result Err. Launcher failures keep their
separate statuses.
The repository includes five programs written entirely through the public
#lang attalambda surface:
| Example | What it does |
|---|---|
hello.attl | Prints a greeting. |
stdout.attl | Exercises explicit standard output. |
foundations.attl | Exercises exact rational arithmetic, Unit, Byte, Option, and Map end to end. |
file-round-trip.attl | Writes and reads back a file. |
http-server.attl | Serves one request on an ephemeral loopback port, then exits. |
Run any example from a registered source checkout with:
racket runner/attalambda.rkt examples/hello.attl
AttaLambda does not sandbox programs. A program can use the same relevant
standard-output, filesystem, and network permissions as the Racket or
AttaLambda process that launched it, and can terminate its own process with
status 0 or 1. Inspect unfamiliar .attl files before running them. In
particular, file-round-trip.attl creates or truncates
attalambda-round-trip.txt in its current directory.
Version 0.7.0 is the sixth public release. It adds four syntax sugars over
the existing pure lambda calculus. It includes pure value renderers and
generic print through the existing stdout boundary. See
Value Rendering and Printing.
The purity rule against recursive module bindings continues to apply. Rat
remains the only public number type; Unit, Byte, Option, Map, and byte-based
file/TCP payloads retain their existing representations.
PLAN.md holds the current roadmap and
PLAN-ARCHIVE.md the completed phase history; this README
intentionally repeats neither.
| Path | Purpose |
|---|---|
core/ | Pure representations, raw algorithms, and strict typed operations. |
effects/ | Pure requests and wrappers for output, files, TCP, exit, and HTTP. |
runtime/codec.rkt | Deterministic conversion between lambda values and private host data. |
runtime/host.rkt | The sole privileged host; start at dispatch-request. |
lang/expander.rkt | Public exports, literal expansion, currying, and one-time host injection. |
runner/attalambda.rkt | Command, source validation, sanitized diagnostics, and one source load. |
macros/ | The two trusted mechanical-expansion modules every production file compiles through. |
readers/ | One-way human-readable observation used outside production computation. |
tests/ | Behavioral, representation, error, laziness, and boundary tests. |
tooling/ | Purity, boundary, and distribution checks. |
For more detail:
docs/API.md describes the implemented public source API.ARCHITECTURE.md explains the layers and dependency
direction.docs/specifications/ contains the three
documents that define the language.docs/ACCEPTANCE.md maps requirements to executable
and structural evidence.docs/design/host-boundary.md records the
approved host protocol and its exact authority.AGENTS.md contains the implementation rules for contributors
and coding agents.Copyright 2026 Kyle Serrecchia.
AttaLambda is available under the Apache License 2.0. Self-contained release archives include the applicable Racket runtime notices and license texts.
159 commits
Racket
85.7%
Shell
7.5%
PowerShell
6.9%
AttaLambda is a small programming language built around a big question:
How much of a practical language can be made from pure lambda calculus?
Programs use familiar Lisp-shaped syntax, but ordinary computation expands to
only variables, one-argument lambdas, and function application. Racket supplies
lazy evaluation and module machinery; effects cross one explicit host
boundary.
This is a complete AttaLambda program:
#lang attalambda
(stdout "Hello from AttaLambda.\n")
AttaLambda 0.7.0 is available as a self-contained Linux x86-64 archive. It includes its own runtime, so you do not need to install Racket.
Release page: https://github.com/kserrec/attalambda/releases/tag/v0.7.0
Version 0.7.0 adds list, multi-parameter lambda, sequential multi-binding
let, and cond with a required final else. These four conveniences expand
to existing unary-lambda terms. Pure value rendering and print, exact rational
arithmetic, the complete List API, and the pure rec rules remain available.
The public API reference describes the complete surface, and
the acceptance record records source and published-archive
verification.
See the 0.7.0 release notes for syntax examples and compatibility.
Download, verify, extract, and run it:
curl -LO https://github.com/kserrec/attalambda/releases/download/v0.7.0/attalambda-0.7.0-linux-x86_64.tar.gz
curl -LO https://github.com/kserrec/attalambda/releases/download/v0.7.0/SHA256SUMS
sha256sum -c SHA256SUMS
tar -xzf attalambda-0.7.0-linux-x86_64.tar.gz
cd attalambda-0.7.0-linux-x86_64
./bin/attalambda --version
./bin/attalambda examples/hello.attl
You should see:
AttaLambda 0.7.0
Hello from AttaLambda.
Linux x86-64 is the only supported binary target. Users should not have to bypass operating-system security protections to try the language, so macOS builds without Apple signing and notarization and Windows builds without Authenticode signing are not distributed.
You need Racket. The install command registers the checkout in your user-level Racket package registry and does not require administrator access:
git clone https://github.com/kserrec/attalambda.git
cd attalambda
raco pkg install --auto --name attalambda .
racket runner/attalambda.rkt examples/hello.attl
AttaLambda has no third-party package dependencies. Its runtime dependencies
are Racket's base and lazy packages; tests also use rackunit-lib and
net-lib.
To run the complete test and structural-purity suite:
./run-all-tests.sh
-7/3 are ordinary
literals.Result; contract and representation failures use Error.The goal is not to hide Racket behind a new syntax. It is to make the boundary between lambda-calculus computation and host authority small, visible, and testable.
On this branch, (exit 0) reports successful completion and (exit 1) reports
unsuccessful completion. Only Rat 0 or 1 is accepted: another type returns
TypeMismatch Error; another Rat returns InvalidCount Error, without calling
the host. Pure AttaLambda chooses and validates the status; only the host
terminates the process. Exit prints nothing automatically and prevents later
effects. Without an exit call, normal completion remains status 0, even when
the program produces an Error or Result Err. Launcher failures keep their
separate statuses.
The repository includes five programs written entirely through the public
#lang attalambda surface:
| Example | What it does |
|---|---|
hello.attl | Prints a greeting. |
stdout.attl | Exercises explicit standard output. |
foundations.attl | Exercises exact rational arithmetic, Unit, Byte, Option, and Map end to end. |
file-round-trip.attl | Writes and reads back a file. |
http-server.attl | Serves one request on an ephemeral loopback port, then exits. |
Run any example from a registered source checkout with:
racket runner/attalambda.rkt examples/hello.attl
AttaLambda does not sandbox programs. A program can use the same relevant
standard-output, filesystem, and network permissions as the Racket or
AttaLambda process that launched it, and can terminate its own process with
status 0 or 1. Inspect unfamiliar .attl files before running them. In
particular, file-round-trip.attl creates or truncates
attalambda-round-trip.txt in its current directory.
Version 0.7.0 is the sixth public release. It adds four syntax sugars over
the existing pure lambda calculus. It includes pure value renderers and
generic print through the existing stdout boundary. See
Value Rendering and Printing.
The purity rule against recursive module bindings continues to apply. Rat
remains the only public number type; Unit, Byte, Option, Map, and byte-based
file/TCP payloads retain their existing representations.
PLAN.md holds the current roadmap and
PLAN-ARCHIVE.md the completed phase history; this README
intentionally repeats neither.
| Path | Purpose |
|---|---|
core/ | Pure representations, raw algorithms, and strict typed operations. |
effects/ | Pure requests and wrappers for output, files, TCP, exit, and HTTP. |
runtime/codec.rkt | Deterministic conversion between lambda values and private host data. |
runtime/host.rkt | The sole privileged host; start at dispatch-request. |
lang/expander.rkt | Public exports, literal expansion, currying, and one-time host injection. |
runner/attalambda.rkt | Command, source validation, sanitized diagnostics, and one source load. |
macros/ | The two trusted mechanical-expansion modules every production file compiles through. |
readers/ | One-way human-readable observation used outside production computation. |
tests/ | Behavioral, representation, error, laziness, and boundary tests. |
tooling/ | Purity, boundary, and distribution checks. |
For more detail:
docs/API.md describes the implemented public source API.ARCHITECTURE.md explains the layers and dependency
direction.docs/specifications/ contains the three
documents that define the language.docs/ACCEPTANCE.md maps requirements to executable
and structural evidence.docs/design/host-boundary.md records the
approved host protocol and its exact authority.AGENTS.md contains the implementation rules for contributors
and coding agents.Copyright 2026 Kyle Serrecchia.
AttaLambda is available under the Apache License 2.0. Self-contained release archives include the applicable Racket runtime notices and license texts.
159 commits
Racket
85.7%
Shell
7.5%
PowerShell
6.9%