An Ale Introduction
But why Lisp? The answer is straight-forward. Because even though over sixty years have come and gone since Lisp was first introduced, no language beats it for simplicity and power. None! And I dare you to prove me wrong. John McCarthy, may he rest in peace, designed a language that is as close to perfection as a human can hope to achieve.
What is Ale?
Ale is a Lisp-1. In this way it is more like Scheme than like Common Lisp. Unlike many Lisps, Ale does not support both interpreted and compiled operation. Instead, when the programmer performs an
(eval), Ale immediately compiles the form and invokes its virtual machine. And unlike nearly all Lisps, bindings in Ale are immutable, even in namespaces.
Ale borrows liberally from Clojure where syntax is concerned, but it diverges in many ways. It is designed to be hosted in a Go process. It is also designed to allow multiple hosted instances within that process, each one being completely isolated from the other.
There’s still quite a bit of stuff missing from Ale. The runtime is only partially complete, the compiler performs no optimization, functions do not perform tail recursion (yet), the VM could be faster, the code generation could be far more efficient, and the type system (if you can call it that) gets involved way too late in the game.
In spite of all that, there is a very solid foundation here for building something that people might actually want to use, myself included, and I invite you to join in on the fun.
Thanks for reading,
April 6, 2019