Open yurrriq opened 7 years ago
I should really put this in a FAQ section somewhere.
~Ahahaha. No.~
There's some personal history here, but in general Clojure is tightly held by a small group, effectively finished (accrete only) and purposefully difficult to contribute to. Some folks find these to be good and proper - I found this to be more than somewhat irksome.
Ox will owe a lot of debts to Clojure and its surrounding tooling, but is intended to be an exploration of what Clojure would look like done again given the lessons learned. It may not at all be compatible and will certainly have a very different take on pattern matching and types than its predecessor.
Jaunt is dead. The carrying cost of moving Clojure's codebase and legacy is too high. Clojure compatibility is an exercise in futility. A clean break is emotionally easier for me to sustain and offers a wide range of interesting avenues which mesh directly with my now fairly well formed ideas around what I want to build.
Ox is by a lone amateur. Haskell has a strong established community and full-time maintainers. I'm working on Ox for fun, and because maybe some day it'll solve some friction points that seem to chase me around. Haskell's flagship feature is lazy evaluation - which Ox will only have as a second class feature by dint of being JVM based and wanting to interop with JVM capabilities. Ripping off at least ML if not Haskell style type directed dispatch however is high on my wishlist as is pattern matching.
Shen gets a lot right in terms of having a very very small kernel and porting well to multiple implementations. I'm very impressed with Shen, as am I with Scheme. But is marred by a history of weirdness, Dr. Taver's own idiosyncrasies, a rather badly written book and lacks a mature flagship implementation one would actually turn to for meaningful deployment besides Dr. Taver's CL backend. I'm sure @deech would be delighted to dispute this assessment.
Both are largely headed in the same direction. On cursory inspection, Ox is doing stuff with integrating packages and versioning into the language which Lux seems to have no truck with. Lux seems to have strayed farther from the Scheme notation tradition than I intend to in various ways. I'll have to take a more meaningful look here.
Again, very similar ideas and direction. Mike and I have corresponded a fair bit. Mike is more interested in a near Clojure language than I am, and his view of the place of types in a language is more in-line with the JVM's interpretation of types while mine is more informed by Haskell. If either of us finish we'll wind up in largely the same niche at least on the JVM but I think that Magic/Kiss will deliberately smell like a clean-room Clojure-but-again whereas Ox is trying to be something else.
Thanks for this. :+1: to a FAQ. P.S. My friend made me read it aloud at the bar. I was too excited to ignore the notification and she was too "quit playing on your phone" to let me not share.
You're not wrong about Shen's "flagship", the reference SBCL implementation isn't a finished product by any means. I prefer to think of it as a prototype.
I would disagree that the book is badly written. The typesetting could definitely use some work but the content is strong, better in my opinion than most programming texts. That said there is certainly a place for more documentation.
As to Tarver, he's is working on his own proprietary Shen implementation and isn't much involved with OSS part and hasn't been for a couple of years. You can safely assume that his quirks, whatever they may be, won't be impeding its progress. On the contrary he has been pretty responsive to questions on the newsgroup.
FWIW I've merged all Kiss development into Magic, which will be the language main project I am working on going forward.
Regarding the Type system question: I'm actually more interested in an Idris style type system, while maintaining compatibility with the host / JVM notion of types, at least for the purposes of fast dispatch and interop. This seems feasible and potentially quite elegant from my current (naive?) perspective.
Also for clarity, I'm not intending to replicate Clojure exactly. I am simply happy to adopt Clojure idioms and conventions where these make sense (including stuff like core function names, concepts like the sequence abstraction).
I'm curious how Ox compares to Shen and Lux.