Files
AILang/Cargo.toml
T
Brummel a9d57c5c81 prose: human-readable projection renderer (iter 20a)
New crate ailang-prose with one public fn module_to_prose(&Module)
-> String. Rust-flavour with braces, =>-match-arms, mode keywords
(own/borrow), effects as trailing 'with IO', Cons(1, Nil) ctor
form, /// doc strings.

Lossy projection where the LLM can re-derive: (con T) wrap,
(fn-type ...) wrap, (term-ctor ...) wrap. Load-bearing semantic
detail stays visible (modes, effects, clone, reuse-as, doc strings,
type annotations, tail flag).

CLI: 'ail prose <file.ail.json>' prints the projection.

3 snapshot fixtures + 28 unit tests. 215-line .ail.json reduces
to ~18 lines of legible source.

20b queued: infix arithmetic, paren elision, let-inlining, do
prettify.
2026-05-08 18:06:16 +02:00

37 lines
887 B
TOML

[workspace]
resolver = "2"
members = [
"crates/ailang-core",
"crates/ailang-check",
"crates/ailang-codegen",
"crates/ailang-surface",
"crates/ailang-prose",
"crates/ail",
]
[workspace.package]
version = "0.0.1"
edition = "2021"
license = "MIT"
repository = "local"
rust-version = "1.80"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
blake3 = "1"
anyhow = "1"
thiserror = "1"
clap = { version = "4", features = ["derive"] }
indexmap = { version = "2", features = ["serde"] }
ailang-core = { path = "crates/ailang-core" }
ailang-check = { path = "crates/ailang-check" }
ailang-codegen = { path = "crates/ailang-codegen" }
ailang-surface = { path = "crates/ailang-surface" }
ailang-prose = { path = "crates/ailang-prose" }
[profile.release]
lto = "thin"
codegen-units = 1