This is a hobby project: a programming language descended mainly from E and Scheme. Nowadays there are at least two more-direct E descendants, in a much more useful state: Secure EcmaScript and Monte.
Why make this, then? I've long wanted a computing system that's completely explained, simple enough to grasp in full detail without getting bored or overwhelmed, and powerful enough that I'd actually use it. Wirth's Oberon is one inspiring example of such a system. I'm aiming at another according to my own taste and idiosyncrasies. Call it a learning project, or outsider art.
Just don't expect any stability, at least anytime soon.
Install Chez Scheme. Then run
./incant
(in Unix; if don't have a Unix shell, then adapt your
invocation from that script).
If you use Emacs and want a language mode, then also install plug-ins/cant-mode.el; see the comments there.
A new Lisp dialect with a molasses-slow interpreter and an almost-useless debugger. On the bright side, it's pretty close now to enforcing capability security, and I'm sometimes pleased with the syntax and the library. I think it's more concise than Scheme without becoming more cryptic, once you get familiar.
$ ./incant
-> (out .say "Hey, world.\n")
Hey, world.
-> (to (fib n) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))
#<fib>
-> (fib 10)
89
->
You can try browsing examples/ and library/. See examples/games and examples/automata for maybe-fun starting points.
To run a source file from the shell:
$ ./incant examples/automata/game-of-life.cant
Or from the listener:
$ ./incant
-> (load "examples/automata/game-of-life.cant")
#<map {~ update #<update>} {~ show #<show>} {~ grid<-picture #<grid<-picture>} {~ r-pentomino #<set((1 -2) (1 -1) (1 0) (2 0) (0 -1))>}>
-> (run r-pentomino 1)
O
O O
O O
#<set((1 -2) (1 0) (0 -1) (0 0) (0 -2) (2 0))>
->
There's a start at guide.md.
Of course, this project would not exist without Scheme or E. It's pretty likely to get more like E, because so far I've been consulting my decades-old memory instead of the sources, and E probably did things better.
Thanks to Kragen Sitaker for early discussions about the language.