Will Rubinius be an acceptable Lisp?
on-ruby.blogspot.com
on-ruby.blogspot.com
Ruby is a language designed in the following steps:
* take a simple Lisp language
* remove macros, s-expression
* add simple object system (simpler than CLOS)
* add blocks, inspired by higher order functions
* add methods found in Smalltalk
* add functionality found in Perl (in OO way)
In my opinion, Ruby is already a Lisp modulo macros. But sometimes, macros and more parens/less syntax are really nice to have. - Take a simple Lisp language.
- Remove macros, s-expression.
- Add a bunch of shit that could be trivially added if you still had macros. Add a bunch of shit that could be trivially added if you still had macros.
... only now, they're standard, first-class citizens across all code using the language.While it's awesome to make yet another Lisp, I think it's far more awesome to have a well-defined Lisp that can run on multiple places.
(That said I realize you were looking for a Common Lisp, but sometimes good enough is good enough ;) )
But it wouldn't. A Lisp that ran on the JVM would be able to use JVM libraries, one that ran on .NET would be able to use .NET libraries, one that ran on Rubinious would be able to use Ruby libraries.
Sure, the core Lisp language might be the same, but as soon as you started doing real work connecting it to outside code/services/devices etc, it'd rapidly become non-portable.
That doesn't mean it would be useless: being able to think in one language over multiple platforms would reduce cognitive load for developers.
Interesting quote from Ola though: "Ola: You can count on a JRuby-based Rubinius. It will happen. And making a Lispinius possible on JRuby would be a major reason for it." I can see this thought process getting all sorts of meta. Rubinius built again upon JRuby-Rubinius using JRLisp? Well maybe not but it's fun to fantasize.
FYI this is from 2007, though I have to imagine doing this
would be even easier now that Rubinius is much more robust
and stable (I mean there's an entire bootstrapped language
for Rubinius now, Fancy: http://www.fancy-lang.org/)
That was exactly my thought process when I submitted. I would love to have a legit Lisp that jives with the Ruby ecosystem. I feel like the ecosystem can make or break a language and, while I love Clojure, dealing with all that Java (especially package structure and package management) makes me want a Ruby-friendly Lisp.Example code: http://toogeneric.com/dump/pretty.atomo.html
"data", "class", "module", "=", and ":=" are all Lisp-style macros. It doesn't have Lisp syntax, but it's very close to it conceptually - in fact Atomo has Lisp's condition system, and a similar string formatting system, and dynamic environment. All of which I plan to port. Fun times ahead!
X foo: Y := ...
X foo: Z := ...
Both of these are inserted on X, which is used as `self` in the method body (so instance variables, etc. work as expected too). It's one method, `foo:`, which pattern-matches on its arguments to determine which branch to evaluate.Thanks for your answer anyway, it looks like a really fun project.