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