Same model, every language. What works crazy well. What needs crazy workarounds. What you learn by expressing the same idea in 12 different language constraints.
Polyformalism is the practice of expressing the same model in many different formal languages to discover what's essential vs accidental. You write the same Quilt cell system in 12 different programming languages. Each language's constraints force different choices. The differences reveal the model. The similarities confirm the model.
This page is the entry point to the 12-language Quilt polyformalism. Each card is one language. Each one has a GitHub repo, a splash image, a philosophy, concrete proof, and insights you can only get from that language's perspective.
From the parent framework at github.com/SuperInstance/polyformalism:
| Language | Era | Cell = | Formula = | Insight |
|---|---|---|---|---|
| TypeScript | 2024 | {path, kind, value} | (ctx) => any | Reactivity is natural |
| Tutor | 1970 | $variable | do fortran.X | Multi-user by default |
| Pydantic-AI | 2026 | BaseModel | Callable[[dict], Any] | Types are the contract |
| Mojo | 2024 | struct | @always_inline fn | Cells are types |
| Julia | 2012 | struct | method on type | Engine is the type system |
| Chapel | 2009 | var on locale | proc | Cells are distributed |
| COBOL | 1959 | 01 RECORD | PERFORM | Hierarchy is explicit |
| C | 1972 | struct | function ptr | Everything is sugar |
| C++ | 1985 | std::variant | std::function | Templates reveal the lattice |
| C# | 2000 | record | delegate | All pieces already exist |
| Metal | 2014 | buffer | kernel fn | Cells are inherently parallel |
| Swift | 2014 | @Published var | async fn | Combine is a cell engine |
The 12 languages differ in 12 ways. They agree on 1 thing: a cell is a typed value, a formula is a function, a listener is a reaction, a sheet is a collection of cells with dependencies. That agreement is the model. The differences are the polyformalism findings.
The polyformalism methodology also iterates back. The insights from each language version feed back into the canonical TypeScript version. quilt-pydantic-ai in particular is iterated twice — once at the start (as the modern equivalent of Tutor) and once at the end (informed by all the other languages). The end version is better than the start version. That's the back-pressure working.