Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

The Interaction Model

A program is an Interaction tree over Refs. Refs name locations in the world; Interactions describe what to do with them - read, write, compute, branch, iterate, compose. The tree runs against a Context that binds each Ref to a Fabric (kv, filesystem, http, browser, ...) and executes there.

program
├─ Parallel # Flow · strategy
│ ├─ ForeverDo # Flow · control
│ │ └─ Sequential # Flow · strategy
│ │ ├─ Increment(Counter.val) # Command → Ref(WRITE)
│ │ └─ Delay(1.0) # Query
│ └─ ReactForever # Flow · control
│ ├─ Counter.val.on_change # StreamQuery
│ └─ Set(Dashboard.count, Counter.val) # Command → Ref(WRITE)
└─ context
├─ Counter.val → kv fabric
└─ Dashboard.count → ui fabric

The spec is language-agnostic — no host-language syntax appears in it. Nu is one implementation, in Python. Others can bind the same tree to any language.

Layers

  • 00-abstract/ - high-level intro: motivation, two citizens, context.
  • 01-foundations/ - core distinctions: atom vs composition, mutation, cardinality, kinds.
  • 02-atoms/ - the kinds made concrete: Ref, Query, Command, Action, Flow, Span, Form.
  • 03-fabric/ - the Fabric layer: address spaces, Context, resolution protocol.
  • 04-domains/ - optional addons on top of the core. Each is a self-contained DSL + Ref blueprints.
  • 05-meta/ - operations on trees themselves: transformations, equivalence.

About

The interaction model - canonical spec

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Contributors