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
App launcher
Shared foundations, reusable interface patterns, and focused route references.
Language, documentation, learning, package, specification, playground, and community routes.
Shared foundations and reusable interface components, from visual rules to exported specimens.
Interaction behaviour, UI states, and tool workbench structures.
Learning reference · Hara
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.
(defn greet [name]
{:message (str "Hello, " name)
:next :build-something})
(greet "Hara") Explanation level
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.
Run one form, change ordinary data, and build a small page before learning specialist vocabulary.
Project contexts
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.
Web
Render data, respond to events, and publish an inspectable project.
Agents
Model work, capabilities, checkpoints, tools, and receipts without hiding execution boundaries.
Graphics
Use Canvas, animation, shaders, and observations while preserving exact source and session state.
Games
Learn state, events, update loops, entities, and deterministic simulation through one playable project.
Music
Create patterns, route signals, expose controls, and keep the score as portable Hara data.
Language tools
Work with forms, parsing, migration, schemas, and source-preserving transformations.
The query remains visible so it can be changed without leaving Learn.
Local and saved progress
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.
Run lessons and practice locally without signing in. Progress remains browser-local until the learner explicitly saves it.
local attemptsruntime receiptsscratch sourceprivate notesNo path is preselected. Learn recommends one next action from declared experience and completed evidence, not an opaque score.
identitycurriculum revisioncompletion evidencedisplay preferencesprivate notesContinue from the exact lesson and curriculum revision last completed, with explicit migration when the course changed.
completed unitsattempt receiptsexact curriculum revisionsaved examplesprivate notesvisibility preferencesResume the exact lesson revision from the last verified unit. A newer curriculum exists, so migration remains an explicit choice.
Course and prerequisite graph
Lessons, concepts, exercises, and projects form one reviewable path. Completion targets the exact curriculum revision and never becomes browser-editable front matter.
A practical path through forms, values, functions, namespaces, capabilities, packages, and durable work.
Durable evidence exists against this exact curriculum revision.
The next recommended unit with prerequisites visible.
A named prerequisite is incomplete; the unit stays visible.
A useful branch, not a hidden requirement.
Lesson reader
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
Define, resolve, and inspect names without treating the editor's current buffer as the source of truth.
functionsimmutable values01 · The idea
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.
{:message "Hello from a namespace"
:next :inspect-qualified-symbol}Namespace tutorial.profile loaded in generation 2.
03 · Inspect the namespace
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.
9f3c2ab7→session generationlearn-pg-7a91 · 2→observation + attemptevent 41Why should a diagnostic retain tutorial.profile/greeting rather than only greeting?
Keep the completed historical revision and require an explicit migration before claiming current completion.
Keep prose and exact source visible; do not fabricate a result or mark the exercise failed.
A named scope that owns vars and source identity.
A symbol that names both namespace and local name.
The exact source fence used to create the current runtime state.
Practice and koans
Capability-free exercises run locally. Durable claims require a named verifier. Peer approaches remain hidden until the learner solves the problem.
The final form must resolve tutorial.profile/greeting through the alias profile.
Compare the namespace introduced by ns with the one referenced by require.
The alias is correct only when it points to the namespace that owns greeting.
Source is editable locally. No attempt or completion claim exists yet.
No findings yet.
The browser evaluator is checking the exact source revision against the exercise contract.
Evaluating three examples and two namespace assertions.
One qualified symbol resolves to the wrong namespace. The attempt remains local and editable.
Expected tutorial.profile/greeting; found tutorial.account/greeting.
Inspect the alias introduced by the require form.
All browser checks pass. The learner may save meaningful progress or continue anonymously.
Three examples and two namespace assertions passed.
A durable verifier confirmed the exact exercise, curriculum, source, and checker revisions.
Completion evidence is durable and revision-aware.
The saved attempt targets an older exercise revision. Preserve it and offer an explicit migration or rerun.
Attempt targets exercise@1.3.0; current curriculum references exercise@1.4.0.
The browser evaluator could not start. No failure or completion claim has been produced.
Retain the exact source and retry without changing the attempt fence.
Immediate browser feedback, not external verification.
Exact exercise, curriculum, source, checker, and identity references create durable evidence.
No result exists; preserve source and retry context without marking the learner wrong.
Project-based learning
Projects own milestones, reflection, and curriculum evidence. The embedded environment reuses the shared Playground workbench rather than inventing a Learn-only editor.
A shareable Canvas scene with one editable control and an inspectable mutation receipt.
{:schema hara.learn/project
:schema-version "2.0.0"
:source-revision "source:ribbon-field:9f3c2ab7"
:runtime {:backend :browser-wasm
:capabilities [:eval :files :canvas :observations]}}Objectives are authored. Identity, runtime facts, completion evidence, and exact curriculum revision remain controlled.
(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}))12 ribbons · trail width 0.42 · event sequence 284
Learn owns milestones and reflection. Playground owns execution and sharing controls. World owns the linked discussion.
Progress and learner profile
Progress is account-scoped, revision-aware, and private by default. Completion evidence is controlled by the progress registry rather than editable front matter.
identity:github:hoebat
6f3a91c2a811b9e0f77c209dTwo observations saved against lesson revision 4b7e1a62.
Private until an exact share link is created.
Completed against curriculum 1.3.0; current path uses 2.0.0.
XPleaderboardsrequired streaksengagement penaltiesIdentity becomes useful after meaningful activity; it never blocks execution or transfers progress into World.
Teaching and reference surfaces
Authors own objectives, prerequisites, estimates, and exercise specifications. Registries control identity, concept graph, runtime, revision, attempts, and completion evidence.
titlesummarylearningObjectivesprerequisiteConceptsestimatedMinutesexerciseSpeccontentIdauthorsconceptGraphruntimeExampleprogressstatusrevisionProgress is never authored here. Attempts and completion evidence are account-scoped registry facts against an exact curriculum revision.
concept/value4 dependantspublishedconcept/function6 dependantspublishedconcept/namespace5 dependantsreviewconcept/capability8 dependantsdraftRunnable environments now reference exact source, backend, capability, and expected-observation contracts.
Downloads and feeds project the same exact identities and revisions rather than creating another source of truth.
World and Learn
World records articles, clippings, comments, contributor identity, presence, and owner-attributed bots. Learn records explanations, exercises, projects, attempts, and curriculum state.
Objectives, prerequisite sequence, runnable lesson placement, practice contracts, project milestones, private notes, attempts, completion evidence, and exact curriculum revisions.
View the curriculum →Public discussion, canonical source links, comments, participants, clippings, package-release discussion, and shared code examples.
Read World discussion →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
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
A field note on moving validation from metadata into the language's portable data model.
Around Hara resolved this discussion to LiveSession, hara-wasm-core, and the canonical merged implementation.
A registered agent publishes a narrow command surface and a verifiable revision.
What moves out of Host/call when the web server becomes a first-class Hara surface.
Explore attributed signals from X, Reddit, Hacker News, Substack, and GitHub without flattening unlike engagement metrics.
Open signal radar →Publishing tools and verifiable worlds.
Programmable web services.
External platforms own their posts. World owns the Hara-specific connections, clips, local discussion, and accountable relay policy around them.
This World composition is a guided example, not another permanent World destination. Return to Learn →
X likes, Reddit votes, and Hacker News points remain source facts; percentile and velocity make comparison explainable.
Submit, clip, discuss, and relay actions stay visible without turning the front page into an automation dashboard.
Ownership and adoption
A future `learn.hara-lang.org` implementation may use these interface specimens while keeping curriculum, progress, runtime, and identity records in their authoritative systems.
Shell geometry, typography, state, form, workbench, focus, responsive, and receipt presentation.
Experience entrances, curriculum browsing, lesson composition, practice commands, project milestones, notes, privacy, and teaching workflows.
Content identities, concept graph, revisions, attempts, completion evidence, migration relations, and account-scoped progress.
Sessions, source fences, backends, capabilities, observations, checks, execution receipts, and exact share links.
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.