a9d57c5c81
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.
37 lines
887 B
TOML
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
|