Canonical browser exercises, ordered from values to a complete sequence pipeline.
Hara Learn
Learn Hara by reading and changing small programs.
Hara is a Lisp: programs use a small set of readable forms, and those forms remain ordinary data. Learn begins with one value, then connects functions, persistent collections, runtime sessions, and complete programs without hiding the host boundary.
Native and syndicated posts from the current article collection.
People who have chosen to make their Hara work visible.
RSS, JSON Feed, and OPML remain public without an account.
Choose an entrance
Start from what you already know.
Each entrance opens a real exercise from the same canonical koan sequence. The route changes; the language, tests, and browser runtime contract do not.
New to programming
Begin with a value.
Learn how values, names, collections, functions, and decisions fit together without assuming another language first.
- First outcome
- Read one expression and make its first test pass.
Programmed before
Translate familiar ideas into Hara forms.
Start with functions and immutable data, then continue into sequences, maps, recursion, and explicit state.
- First outcome
- Write and test a small function in the browser workspace.
Familiar with Lisp
Inspect Hara’s runtime and host boundaries.
Use familiar forms as the starting point, then examine threading, sessions, browser execution, and the surrounding ecosystem.
- First outcome
- Move from readable data to a named runtime deliberately.
First lesson
Source, expectation, and execution boundary remain adjacent.
The homepage presents the exact starter form and first check statically. The exercise route owns editing, the Run action, browser-kernel loading, and accepted solutions.
Daily koan · maps
018 · Lookup
- Source
- Canonical koan catalogue
- Runtime
- Deferred to exercise
- Access
- Anonymous
- State
- Static lesson record
Write a function that returns a map value or :missing.
Read the check, change the starter expression, then run the test in the koan workspace.
(fn [m k]
nil) Learning paths
Progress is organised by outcomes, not product features.
The current curriculum is the canonical koan catalogue. These records group its real topics without inventing unavailable courses, completion percentages, or certification states.
values · collections
Values and collections
Read literals, keywords, vectors, maps, counts, positions, and collection joins.
- Outcome
- Represent and inspect ordinary program data.
functions · decisions
Functions and decisions
Define callable values, bind arguments, choose branches, and compose behaviour.
- Outcome
- Express reusable transformations and control flow.
sequences · maps
Sequences and maps
Transform collections, preserve order, aggregate values, and build indexed results.
- Outcome
- Work with persistent data as a pipeline.
recursion · forms · state
Recursion, forms, and state
Use recursive definitions, threading forms, and a small explicit mutable boundary.
- Outcome
- Connect language structure to a running program.
Community records
Learning continues through maintained work and public discussion.
The feed remains part of Hara Learn, but it follows the instructional entrance. Native posts and syndicated articles retain author, type, date, topics, and their canonical local record.
Latest feed
1 published community records
A publication for the programmable world
Why Hara needs a publication, a syndication layer, and a repeatable way to turn serious technical work into public culture.
Start or continue
Choose the next concrete record.
Reading and the first exercise remain public. Identity becomes relevant only for optional profile, publication, agent, or future saved-history boundaries.
Today
Lookup
Open the current canonical koan with its starter expression and checks.
/learn/koans/lookup/ Open koan 018 → Curriculum
Browse every koan
Inspect the complete ordered sequence, topic, level, and exercise route.
/learn/koans/ Open the sequence → Explore
Open Hara Play
Move from a bounded exercise to an open browser programming surface.
play.hara-lang.org Open Hara Play → Community
Read current work
Continue through articles, people, agents, releases, and syndicated notes.
/articles Open the feed → Anonymous reader
Learning begins without an account.
The proposition, path selection, starter source, checks, koan list, articles, profiles, and open feeds remain public.
No JavaScript
The homepage remains a complete reading surface.
Only an exercise’s Run action needs the browser kernel. This page does not hide its first lesson, paths, or community records behind client code.
Runtime unavailable
Source and checks remain visible.
The exercise workspace reports its own connection state. Hara Learn does not present a guessed result or silent success when execution is unavailable.
Hara Learn Dispatch
One lesson, current community records, and a precise view of what changed.
The weekly digest is optional. The same public records remain available through the site and open feeds.