Hyperstitious Workbench

Interactive Algorithmic Fluency Interface

Status Active Development
Stack Unison · Clojure · ClojureScript · Scittle
Related Fold/Unfold — permanence gradient for workbench states
---

Core Thesis

Algorithmic fluency is not knowledge about algorithms—it's the capacity to think with and through computational structures. Like language fluency, it's embodied, intuitive, and developed through practice.

Most programming education focuses on syntax and semantics. The Workbench focuses on kinesthetic understanding—the feel of recursion, the shape of a fold, the rhythm of map-filter-reduce.

The "hyperstitious" framing: ideas that make themselves real through belief and enactment. By practicing algorithmic thinking in a responsive environment, the patterns become part of how you perceive problems.

---

The Fluency Model

Algorithmic fluency develops through four interlocking capacities:

Pattern Recognition

Seeing the structure beneath the surface. Recognizing that "sum a list" and "concatenate strings" and "find maximum" are all folds.

Practice: Given a problem, identify which core pattern applies before writing any code.

Decomposition

Breaking complex problems into composable pieces. Finding the seams where a system naturally separates.

Practice: Given a monolithic function, identify the smallest meaningful units.

Abstraction

Recognizing what varies and what stays the same. Parameterizing the variable parts. Building general from specific.

Practice: Given three similar functions, extract the common pattern as a higher-order function.

Composition

Combining small pieces into larger wholes. Understanding how data flows through pipelines. Threading transformations.

Practice: Given a set of small functions, compose them to solve a complex problem without writing new logic.

---

Workbench Modes

The Workbench provides four modes of engagement, each supporting different aspects of fluency development:

Explore Ephemeral → Volatile

Free-form REPL interaction with guided prompts. No goals, no grades—just responsive feedback.

Live evaluation Auto-visualization Gentle suggestions

Persistence: Ephemeral by default. Flick up to preserve interesting expressions to Volatile.

Practice Session → Local

Structured exercises with verification. Progressive difficulty. Spaced repetition for pattern internalization.

Katas Property tests Time challenges

Persistence: Session tracks current streak. Local stores long-term progress and mastery levels.

Build Local → Distributed

Project scaffolding and incremental construction. Real artifacts that do real things.

Templates Milestones Deployment

Persistence: Local during development. Promote to Distributed when sharing or deploying.

Reflect Archival

Review session history. Pattern recognition across your own work. Insight crystallization.

Session replay Pattern mining Insight capture

Persistence: Insights worth keeping are witnessed at Archival stratum.

---

Core Patterns Library

The Workbench is organized around a curated set of fundamental patterns. Mastery means these become automatic—you reach for them without conscious thought.

Map
(a → b) → [a] → [b]
Transform each element. Shape preserved, contents changed.
Filter
(a → Bool) → [a] → [a]
Keep elements that pass. Shape shrinks, contents unchanged.
Fold/Reduce
(b → a → b) → b → [a] → b
Accumulate into a single value. Shape collapses.
Unfold
(b → Maybe (a, b)) → b → [a]
Generate from seed. Shape expands from nothing.
Zip
[a] → [b] → [(a, b)]
Pair elements by position. Two shapes merge.
Partition
(a → Bool) → [a] → ([a], [a])
Split by predicate. One shape becomes two.
Group By
(a → k) → [a] → Map k [a]
Collect by key. Flat becomes nested.
Flatten
[[a]] → [a]
Remove nesting. Nested becomes flat.
---

Live Workbench

Practice algorithmic patterns. Select a challenge, write your solution, verify with tests.

Press Enter to run your solution. Tab to navigate between challenges.

---

Why Unison?

Unison is a language where code is content-addressed. Every definition has a hash. Names are just metadata. This has profound implications for the Workbench.

Definitions are permanent

Once you write a function, its hash is its identity forever. Refactoring is renaming, not changing. Your history is preserved.

No dependency conflicts

Different versions of a function can coexist. Your old code keeps working even as the ecosystem evolves.

Distributed by default

Code can be shared by hash. The Workbench can pull patterns from a global library and push your solutions back.

Structured editing possible

Because code is data, the Workbench can offer semantic editing—transform patterns, not text.

Unison's model aligns with Fold/Unfold's permanence gradient: code naturally lives at the Archival stratum. The Workbench makes this visible.

---

Connection to Fold/Unfold

The Workbench and Fold/Unfold are complementary systems. Fold/Unfold provides the persistence architecture; the Workbench is a primary client.

Workbench State Fold/Unfold Stratum Rationale
REPL expression Ephemeral Exists only during evaluation
Scratch buffer Volatile Working memory, cleared on restart
Current exercise Session Persists for duration of practice session
Progress / mastery Local Your personal learning record
Shared solutions Distributed Published to community, replicated
Canonical patterns Archival Core library, content-addressed

The Workbench doesn't just use Fold/Unfold—it teaches the concepts. Working through the strata becomes intuitive through practice.

---

On Hyperstition

What makes an idea "hyperstitious"?

Hyperstition: fictions that make themselves real. Not lies, not truths—but ideas that function because they're believed and enacted. Money, nations, programming languages.

The Workbench is hyperstitious in this sense: by practicing algorithmic thinking, you become someone who thinks algorithmically. The practice creates the practitioner.

There's a loop: the Workbench helps you build the Workbench. As your fluency grows, you can extend the tool that extends you. This is the hyperstitious engine.

1 Practice patterns in the Workbench
2 Patterns become intuitive
3 See opportunities to improve Workbench
4 Implement improvements using patterns