Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ The APIs of library sources and sinks are **[Open]**.

### Mutability, time, and transactions

Cambra's model of state is **temporal functional mutation**: a mutable variable *is* a total function from a **sequencing domain** (a time axis) to a value — its **history**. "Mutation" is the incremental revelation of that function as the domain advances; "reading" is lookup at a time. Conceptually, nothing is ever overwritten — there is no concept of a mutable cell in CCL: the compiler eliminates every mutable write into a pure, well-founded recursive definition whose cycles all pass through *causal accessors* (values at a position depend only on strictly earlier positions). This model is documented in [src/ccl/design/mutability.md](../src/ccl/design/mutability.md).
Cambra's model of state is **temporal functional mutation**: a mutable variable *is* a total function from a **sequencing domain** (a time axis) to a value — its **history**. "Mutation" is the incremental revelation of that function as the domain advances; "reading" is lookup at a time. Conceptually, nothing is ever overwritten — there is no concept of a mutable cell in CCL: the compiler eliminates every mutable write into a pure, well-founded recursive definition whose cycles all pass through *causal accessors* (values at a position depend only on strictly earlier positions). This model is documented in [src/ccl/design/mutability.md](../src/ccl/design/mutability.md); [mutability-walkthrough.md](mutability-walkthrough.md) is a conceptual tour of the same ground, following two programs from CHL to operators.

Mutability has two forms:
- **Inductive** mutability is an exclusive mutable variable over a statically-determined time domain. The time domain is all of the writes to that variable.
Expand Down
Loading
Loading