In part the name is a nod to Koestler’s later work which has, for a very long time, shaped the way I look at complexity.
Partly I just want to open new doors.
People always ask “why write a new language? What’s different about it?”.
When people ask me that, I call this an art project. I work on it because I can’t not work on it. I refuse to reduce it to any fixed criteria. It isn’t and won’t be justified.
I refuse to say what it is because, in the end, I don’t know. And focusing on that up front is uselessly limiting.
Instead, let’s focus on a set of things that I don’t think should be as hard as they are in practice, and a set of assumptions that need to be questioned.
The julia implementation is the original prototype, but is no longer being updated. I’ll keep it around as a reference for awhile yet.
The clojure implementation is far from complete, but the act of reimplementing it in a different paradigm has forced me to clarify a number of things and the clojure implementation is better in most ways.
This is still very early. There’s no editor support, basically no tooling. All we have is a some data structures, an interpreter, and a repl. To run the repl:
From the clj dir (“impls/clj/”), run
clojure -Arepl -X
or call janus.core/repl
from your editor. Note: nrepl in emacs handles
read
by taking stdin from the minibuffer. This is a little weird, but not
unusable.
# First time project setup
import Pkg
Pkg.activate("./") # Assumes you're running the repl from jl project root.
Pkg.instantiate()
# Optional, takes a while but speeds up subsequent runs
Pkg.precompile()
# Run a demo
include("src/core.jl")
Once the project has been instantiated, you can run the repl from a terminal in the root directory with
julia --project=. src/core.jl
Have fun. Or try to without rlwrap…
For a primer on the language (in progress) See docs/langauge.org.
For a bit of justification, in spite of the above diatribe, see docs/aesthetics.org. That doc is a mosaic of years of my own notes. It’s sprawling, sometimes repetitive, and often (though I’ve tried to clarify) obscure. Enjoy it if you can, otherwise ignore it.
Copyright © Thomas Getgood 2024.
All rights reserved.
This code is unlicensed. If you want to use it, contact me and I’ll try to talk you out of it.