From what I've seen about Shen, it seems like the idea is to write some kind of layer on top of the host language on which Shen is run, kind of like an interpreter, though not quite.
Or at least that's the feeling I've got from watching a talk on Shen.
Lux, on the other hand, will be compiled directly to the target platforms. There will be a degree of separation (mostly because portability is a #1 concern for me and I don't wan't host semantics to compromise it), but Lux is meant to compile down to host code (bytecode, in the case of the JVM).
Also, the type-system is more like Haskell's, whereas Shen has it's own way of doing it (sequent-calculus).
Mark Tarver originally wrote Qi, which exclusively ran on top of Common Lisp. Qi was refactored as Shen, which is implemented on a small core and is thus very portable. IIRC Mark only maintains the Common Lisp implementations, and the rest were implemented by the community.
Shen doesn't execute directly, it's compiled to K-lambda, a very small, simple, lisp-as-bytecode. K-lambda is very portable, and wherever K-lambda can run, so can Shen.
Comments
How does it compare to Shen? http://www.shenlanguage.org/
From what I've seen about Shen, it seems like the idea is to write some kind of layer on top of the host language on which Shen is run, kind of like an interpreter, though not quite. Or at least that's the feeling I've got from watching a talk on Shen. Lux, on the other hand, will be compiled directly to the target platforms. There will be a degree of separation (mostly because portability is a #1 concern for me and I don't wan't host semantics to compromise it), but Lux is meant to compile down to host code (bytecode, in the case of the JVM). Also, the type-system is more like Haskell's, whereas Shen has it's own way of doing it (sequent-calculus).
"runs under CLisp, SBCL, Clojure, Scheme, Ruby, Python, the JVM, Haskell and Javascript"
Wow, someone really likes writing compilers...
Mark Tarver originally wrote Qi, which exclusively ran on top of Common Lisp. Qi was refactored as Shen, which is implemented on a small core and is thus very portable. IIRC Mark only maintains the Common Lisp implementations, and the rest were implemented by the community.
How can something, no matter how small core it has, be very portable from CL to Haskell?
Shen doesn't execute directly, it's compiled to K-lambda, a very small, simple, lisp-as-bytecode. K-lambda is very portable, and wherever K-lambda can run, so can Shen.
Details here: http://www.lambdassociates.org/blog/klambda.htm
Interesting to see how many of these overlap.
For example:
Lux->Clojure->JVM
Lux->Ruby->JVM
Lux->Haskell->Javascript
Any more that I missed?
Hypothetically: Lua->Clojure->Javascript (since Javascript is supposedly one of Clojure's compilation targets, in the form of ClojureScript).
Comes with a fully functional prolog. Sweet!