Skip to content

Commit 69cbc3e

Browse files
Merge pull request #38 from hyperpolymath/docs/migration-lesson-player-hp
docs(lessons): add PlayerHP case study (aspect-decomposition + mut-vs-State)
2 parents ed8b175 + 9f6617f commit 69cbc3e

25 files changed

Lines changed: 2748 additions & 47 deletions

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ jobs:
4040
- name: Run codegen WASM tests
4141
run: opam exec -- ./tools/run_codegen_wasm_tests.sh
4242

43+
- name: Run face-transformer regression tests
44+
run: opam exec -- ./tools/run_face_transformer_tests.sh
45+
4346
- name: Check formatting
4447
run: opam exec -- dune build @fmt
4548

README.adoc

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,16 @@ On top of that core, the language supports _faces_: sugared surface syntaxes tha
7676

7777
A face is not a separate language. It is a different presentation layer over the same core model.
7878

79-
Examples include:
79+
The established faces are:
8080

8181
- *AffineScript* — the canonical face
82-
- *JaffaScript* — a JavaScript-like face
83-
- *RattleScript* — a Python-like face
84-
- *PseudoScript* — a pseudocode-oriented face
82+
- *JaffaScript* — a JavaScript / TypeScript-like face
83+
- *RattleScript* — a Python-like face (also positioned as "Python for the web" via typed-wasm)
84+
- *PseudoScript* — a pseudocode-oriented face for CS pedagogy
85+
- *LucidScript* — a PureScript / Haskell-like face
86+
- *CafeScripto* — a CoffeeScript-like face
87+
88+
Every face shares the canonical `.affine` file extension; the active face is selected by an optional `face:` pragma on the first comment line of the file (e.g. `# face: rattlescript`, `// face: jaffascript`, `-- face: lucidscript`), or by `--face NAME` on the CLI.
8589

8690
This means people can bring familiarity from a language family they already love, while still entering a system with stronger guarantees around ownership, effects, state, and resource usage.
8791

@@ -312,11 +316,15 @@ face syntax -> AffineScript core AST -> type/effect/ownership checks -> ba
312316

313317
Examples:
314318

315-
- JaffaScript lowers JavaScript-like syntax into the AffineScript core
319+
- JaffaScript lowers JavaScript / TypeScript-like syntax into the AffineScript core
316320
- RattleScript lowers Python-like syntax into the same core
317321
- PseudoScript lowers structured pedagogical pseudocode into the same core
322+
- LucidScript lowers PureScript / Haskell-like syntax into the same core
323+
- CafeScripto lowers CoffeeScript-like syntax into the same core
324+
325+
Side-by-side examples for each face live under `examples/faces/`; you can preview the canonical lowering of any file with `affinescript preview-python` / `preview-js` / `preview-pseudocode` / `preview-lucid` / `preview-cafe`.
318326

319-
So the question is not “which face is the real language?”
327+
So the question is not “which face is the real language?”
320328
The answer is: the core semantics are the language; faces are entrances.
321329

322330
== Backends and Targets

bin/main.ml

Lines changed: 193 additions & 39 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)