Skip to route content
learn.lesson@2.0.0 learn.concept@2.0.0 learn.exercise@2.0.0 learn.project@2.0.0 learn.progress@2.0.0

Learning reference · Hara

Learn the language one form at a time.

A form is a Hara data structure that can represent code or data and can be inspected before it is evaluated. The first lesson reads and runs one small form; later material introduces functions, namespaces, capabilities, packages, and runtime sessions.

Entrances
3 explanation levels
Tracks
6 project contexts
Contract
5 hara.learn@2.0.0 content types
Account
Not required for local execution
First lessonlesson-01.hara
Local Wasm · ready
(defn greet [name]
  {:message (str "Hello, " name)
   :next    :build-something})

(greet "Hara")
Ready to runNo account · editor remains unfocused
⌘ Enter

Explanation level

Choose the background that best describes you.

The selected entrance changes explanation depth and the recommended first lesson. It does not create a separate version of Hara or remove prerequisites from the curriculum.

Selected entranceNew to programming

Start with values you can see

Run one form, change ordinary data, and build a small page before learning specialist vocabulary.

First lesson
first-value
Estimated time
18 minutes
Sequence
first run → first change → first useful output
Open the selected lesson →

Project contexts

Choose a context for the same language concepts.

Tracks reuse concepts and exact lesson revisions. A preview track remains labelled as a preview and does not imply that every project or runtime capability is implemented.

6 tracks
WWWavailable

Web

Build a small interactive page

Render data, respond to events, and publish an inspectable project.

AGavailable

Agents

Build an accountable agent workflow

Model work, capabilities, checkpoints, tools, and receipts without hiding execution boundaries.

GXavailable

Graphics

Make a live visual system

Use Canvas, animation, shaders, and observations while preserving exact source and session state.

GMpreview

Games

Compose a small interactive world

Learn state, events, update loops, entities, and deterministic simulation through one playable project.

MUpreview

Music

Program an audio patch

Create patterns, route signals, expose controls, and keep the score as portable Hara data.

LTavailable

Language tools

Inspect and transform source

Work with forms, parsing, migration, schemas, and source-preserving transformations.

Local and saved progress

Run locally before creating an account.

An identity is used only when the reader chooses to save progress, private notes, or selected project links. The first lesson and local practice remain available without one.

Saved position

Namespaces give values a durable home

Resume the exact lesson revision from the last verified unit. A newer curriculum exists, so migration remains an explicit choice.

Completed
3 of 7 units
Revision
6f3a91c2
Next check
qualified symbol check
Open saved lesson revision →

Course and prerequisite graph

Progress follows exact concepts, not a hidden score.

Lessons, concepts, exercises, and projects form one reviewable path. Completion targets the exact curriculum revision and never becomes browser-editable front matter.

learn.project@2.0.0

From one value to a durable Hara project

A practical path through forms, values, functions, namespaces, capabilities, packages, and durable work.

Current · Organize code with namespaces
Complete

Durable evidence exists against this exact curriculum revision.

Current

The next recommended unit with prerequisites visible.

Locked

A named prerequisite is incomplete; the unit stays visible.

Optional

A useful branch, not a hidden requirement.

Lesson reader

Calm prose around an exact runnable example.

Reading remains primary. Run updates the result without focusing the editor; Edit is the explicit action that unlocks and focuses source on touch devices.

lesson-namespaces · lesson:namespace:4b7e1a62

Namespaces give values a durable home

Define, resolve, and inspect names without treating the editor's current buffer as the source of truth.

Current lesson
Learning objectives
  1. Define a namespace and one public value.
  2. Resolve a qualified symbol from another namespace.
  3. Explain why source revision and runtime namespace state are separate facts.
Prerequisites
functionsimmutable values

01 · The idea

A namespace is a durable name boundary.

Source files are useful containers, but they are not the identity of a value. A namespace gives public vars a stable qualified name while the runtime records which exact source revision created the current state.

Runnable exampledocs.live-example + learn.lesson
Ready
Open exact PlaygroundRun never focuses source
Resultevent 41
{:message "Hello from a namespace"
 :next :inspect-qualified-symbol}

Namespace tutorial.profile loaded in generation 2.

Session
learn-pg-7a91
Generation
2
Backend
browser-wasm
Capabilities
eval · observations
Source revision
lesson-source:9f3c2ab7
Curriculum revision
learn-curriculum@2.0.0:6f3a91c2

03 · Inspect the namespace

Runtime state and source identity are related, not identical.

The session can retain namespace state across evaluations, while lesson completion still targets the source and curriculum revisions shown above. Restart may advance generation without rewriting source identity; replacement creates a newly fenced session.

Check understandingOne reason, not a trick question

Why should a diagnostic retain tutorial.profile/greeting rather than only greeting?

Choose the explanation that preserves identity across packages and runtimes.
Lesson revision changed

Keep the completed historical revision and require an explicit migration before claiming current completion.

Runtime unavailable

Keep prose and exact source visible; do not fabricate a result or mark the exercise failed.

Practice and koans

A focused problem, an inspectable check, and no coercive gate.

Capability-free exercises run locally. Durable claims require a named verifier. Peer approaches remain hidden until the learner solves the problem.

Exact attempt sourceattempt-source:3b621c9f
Local pass

Immediate browser feedback, not external verification.

Server verified

Exact exercise, curriculum, source, checker, and identity references create durable evidence.

Runtime unavailable

No result exists; preserve source and retry context without marking the learner wrong.

Project-based learning

Grow one visible result into a complete project.

Projects own milestones, reflection, and curriculum evidence. The embedded environment reuses the shared Playground workbench rather than inventing a Learn-only editor.

learn.project@2.0.0

Build a live signal field

A shareable Canvas scene with one editable control and an inspectable mutation receipt.

Project revision
project:signal-field:72aa901f
Source revision
source:ribbon-field:9f3c2ab7
Backend
browser-wasm
Live studioSignal fieldbrowser-wasm Open in Playground
(defn ribbon-field
  [{:keys [count width decay]
    :or {count 12 width 0.42 decay 0.18}}]
  (canvas/field
    {:ribbons count
     :trail-width width
     :signal-decay decay
     :palette :hara/signal}))
ResultCanvas session ready

12 ribbons · trail width 0.42 · event sequence 284

event 282 · source loadedevent 283 · session readyevent 284 · canvas.frame
Session learn-project-91d2Generation 3source:ribbon-field:9f3c2ab7
Project milestones

Evidence grows with the project.

Learn owns milestones and reflection. Playground owns execution and sharing controls. World owns the linked discussion.

  1. 01
    Run the starter fieldruntime receipt
    complete
  2. 02
    Change trail widthsource + observation receipt
    current
  3. 03
    Explain the capability boundarywritten reflection
    locked
  4. 04
    Share an exact project linkpublication reference
    locked

Progress and learner profile

Record meaningful learning facts, not attention metrics.

Progress is account-scoped, revision-aware, and private by default. Completion evidence is controlled by the progress registry rather than editable front matter.

learn.progress@2.0.0

Learning profile

identity:github:hoebat

private-by-default
Completed units3Exact curriculum revision
Current unitnamespacesRecommended, not compulsory
Saved examples4Learner-owned
Private notes6Never public by default
Meaningful milestones4 evidence-backed facts
  1. 01
    First runattempt:first-value:pass
    complete
  2. 02
    First source changeattempt:change-data:pass
    complete
  3. 03
    First solved problemcompletion:functions:verified
    complete
  4. 04
    First useful projectproject:signal-field:in-progress
    current
Path progress by revisionNo aggregate XP
Language foundations3 / 7
3 of 76f3a91c2
Graphics1 / 11
1 of 11a811b9e0
Agents0 / 14
0 of 14f77c209d
Saved examples and notes
PrivateNamespace alias notes

Two observations saved against lesson revision 4b7e1a62.

Selected projectLive signal field

Private until an exact share link is created.

HistoricalTyped schema exercise

Completed against curriculum 1.3.0; current path uses 2.0.0.

Teaching and reference surfaces

Author the lesson. Inspect the controlled curriculum facts.

Authors own objectives, prerequisites, estimates, and exercise specifications. Registries control identity, concept graph, runtime, revision, attempts, and completion evidence.

learn.lesson@2.0.0Lesson authoring preview
Draft · lesson-draft:31b9d4ee
Rendered lesson card

Lesson · 18 minutes

Namespaces give values a durable home

Define, resolve, and inspect qualified names without hiding source or runtime identity.

concept/functionconcept/immutable-value
Raw front matter
schema: hara.learn
schemaVersion: 2.0.0
contentType: learn.lesson
title: Namespaces give values a durable home
summary: Define, resolve, and inspect qualified names.
learningObjectives:
  - Define one namespace and public value
  - Resolve a qualified symbol
prerequisiteConcepts:
  - concept/function
estimatedMinutes: 18
exerciseSpec:
  checker: namespace-alias@1.4.0
  starterSource: fixtures/namespace-alias.hara
Concept registry

Prerequisite maintenance

concept/value4 dependantspublished
concept/function6 dependantspublished
concept/namespace5 dependantsreview
concept/capability8 dependantsdraft
Version migrationExplicit review required

learn.lesson@1.3.0 → learn.lesson@2.0.0

Runnable environments now reference exact source, backend, capability, and expected-observation contracts.

Portable teaching metadata4 projections

Downloads and feeds project the same exact identities and revisions rather than creating another source of truth.

World and Learn

Lessons and public discussion keep separate records.

World records articles, clippings, comments, contributor identity, presence, and owner-attributed bots. Learn records explanations, exercises, projects, attempts, and curriculum state.

Learn records

Objectives, prerequisite sequence, runnable lesson placement, practice contracts, project milestones, private notes, attempts, completion evidence, and exact curriculum revisions.

View the curriculum →
World records

Public discussion, canonical source links, comments, participants, clippings, package-release discussion, and shared code examples.

Read World discussion →
Shared identity, separate navigation

The same Hara or GitHub identity may appear in both routes. Learn progress does not become a public profile score, and World activity does not unlock a lesson.

View Around Hara references →

Guided example · Learn / World

World

This World surface now lives inside Learn as a guided interface reading. Paper-like panels and compact directories keep it humane; native posts, external signals, source registration, and feed management remain explicit and attributable.

World example · Learn

Hara World

43 sources online
HZ

Typed schemas are becoming ordinary Hara values

A field note on moving validation from metadata into the language's portable data model.

Y
External signal · Hacker NewsTop 6% today

Why Hara's LiveSession boundary reads more like a protocol

Around Hara resolved this discussion to LiveSession, hara-wasm-core, and the canonical merged implementation.

AG

Agent registry field report: first signed capability record

A registered agent publishes a narrow command surface and a verifiable revision.

HB

Hoplite raw interfaces now cover more of the host

What moves out of Host/call when the web server becomes a first-class Hara surface.

Around Hara

Five sources, one story

Explore attributed signals from X, Reddit, Hacker News, Substack, and GitHub without flattening unlike engagement metrics.

Open signal radar →

Who is using Hara

GW
Greenways

Publishing tools and verifiable worlds.

HP
Hoplite

Programmable web services.

Learn owns the explanation

This World composition is a guided example, not another permanent World destination. Return to Learn →

Source-relative ranking

X likes, Reddit votes, and Hacker News points remain source facts; percentile and velocity make comparison explainable.

Accountable commands

Submit, clip, discuss, and relay actions stay visible without turning the front page into an automation dashboard.

Ownership and adoption

The interface reference does not own curriculum or learner data.

A future `learn.hara-lang.org` implementation may use these interface specimens while keeping curriculum, progress, runtime, and identity records in their authoritative systems.

Visual Language

Shell geometry, typography, state, form, workbench, focus, responsive, and receipt presentation.

Learn application

Experience entrances, curriculum browsing, lesson composition, practice commands, project milestones, notes, privacy, and teaching workflows.

Curriculum and progress registries

Content identities, concept graph, revisions, attempts, completion evidence, migration relations, and account-scoped progress.

Playground and runtimes

Sessions, source fences, backends, capabilities, observations, checks, execution receipts, and exact share links.

World

Public discussion, clippings, comments, contributors, presence, and references around learning material.

Review the front-matter contract, workbench reference, exact Playground handoff, and V2-LEARN.md before adoption. This fixture contains 5 hara.learn content types and no production learner data.