Choose your Hara setup
You can learn Hara before choosing a permanent toolchain.
Start in the browser for the shortest path to a running form. Move to the CLI, an editor, the JVM, or an embedded web kernel when the project needs those capabilities. The .hal source language and the core evaluate, inspect, change, and keep workflow remain the same.
Recommended first route
Section titled “Recommended first route”For a first encounter with Hara, use this order:
- Read Why Hara? and run the first form.
- Continue through Read Hara and build from scratch.
- Use the Playground whenever you want a live browser session.
- Build Tic Tac Toe to combine data, rules, state, input, and rendering.
- Install or embed a runtime when your own project needs one.
This route delays setup decisions until you know what you are trying to build.
Start without installing anything
Section titled “Start without installing anything”Use the browser-hosted kernel to evaluate forms, define functions, keep session state, and inspect returned values.
Choose this first when you want to learn the language or test an idea immediately.
Build a browser project or embed the WebAssembly kernel in an existing application.
Choose this when the program itself belongs in the browser or when Hara should become a programmable part of a web product.
Work locally
Section titled “Work locally”Install Hara locally, evaluate forms, run .hal files, open a REPL, and work with project files and tests.
Choose this when you are ready to create a durable local project.
Connect source files and editor commands to a named Hara session.
Choose this when the source tree should be the main work surface and you want evaluation close to the code.
Edit .hal files and evaluate forms, regions, or files from Emacs.
Choose this when you want a Lisp-native editing workflow around the same Hara runtime.
Work with Java
Section titled “Work with Java”Use the Truffle runtime, Java classes, Maven projects, or JVM contributor tools. Hara can run alongside an existing Java system and can target Native Image deployment.
Choose this when Java interop or the JVM ecosystem is part of the application.
One project, several surfaces
Section titled “One project, several surfaces”A normal Hara project keeps its durable source and project description together:
my-project/ project.edn workspace.edn src/ app/ main.hal.halfiles contain executable source.project.edndescribes source roots, dependencies, runtime expectations, and requested capabilities.workspace.edncan describe the files, areas, nodes, controllers, visualisers, and connections that form a visual workspace.
The Playground, CLI, browser, JVM, and editors are ways to reach the project. They are not separate versions of the language.
A live session is a feedback environment rather than the only copy of the work. Test a form against the running system, inspect the result, and keep successful definitions in source so the project can be reopened in a fresh session or another host.
Choose by what the program needs
Section titled “Choose by what the program needs”| Need | Begin with |
|---|---|
| Learn Hara or test one form | Playground |
| Create scripts, tests, and local files | CLI |
| Build a browser application | Web |
| Integrate with Java | JVM |
| Evaluate from a source editor | VS Code or Emacs |
You do not need to choose permanently. Keep pure transformations and application rules portable, then place host-specific effects behind explicit capability boundaries.
Continue
Section titled “Continue”New to the language? Continue with Read Hara and build from scratch.
Ready to make something complete? Build Tic Tac Toe.