Hara Learn

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.

Anonymous first lesson Static source before execution Browser kernel only in exercises
Koans30

Canonical browser exercises, ordered from values to a complete sequence pipeline.

Community records1

Native and syndicated posts from the current article collection.

Published profiles0

People who have chosen to make their Hara work visible.

Open feed formats3

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.

01

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.
02

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.
03

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

Level 2
Source
Canonical koan catalogue
Runtime
Deferred to exercise
Access
Anonymous
State
Static lesson record
No inferred execution result is shown.
Prompt

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.

lookup.halStarter source
(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.

01 8 exercises

values · collections

Values and collections

Read literals, keywords, vectors, maps, counts, positions, and collection joins.

Outcome
Represent and inspect ordinary program data.
02 6 exercises

functions · decisions

Functions and decisions

Define callable values, bind arguments, choose branches, and compose behaviour.

Outcome
Express reusable transformations and control flow.
03 12 exercises

sequences · maps

Sequences and maps

Transform collections, preserve order, aggregate values, and build indexed results.

Outcome
Work with persistent data as a pipeline.
04 4 exercises

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

View every post →

Open syndication

Publish here or keep publishing at home.

Registered RSS and Atom sources keep visible attribution and canonical links. The shared feed is an index and discussion surface, not a replacement for an author’s site.

Native
Review-first Markdown post
Syndicated
Registered RSS or Atom source
Readers
Web, RSS, JSON Feed, or OPML

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.

01

Today

Lookup

Open the current canonical koan with its starter expression and checks.

/learn/koans/lookup/ Open koan 018 →
02

Curriculum

Browse every koan

Inspect the complete ordered sequence, topic, level, and exercise route.

/learn/koans/ Open the sequence →
03

Explore

Open Hara Play

Move from a bounded exercise to an open browser programming surface.

play.hara-lang.org Open Hara Play →
04

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.