神.clj | Shen for Clojure 0.1.0
Shen[1] is a portable functional programming language by Mark Tarver[2]
that offers
* pattern matching,
* λ calculus consistency,
* macros,
* optional lazy evaluation,
* static type checking,
* an integrated fully functional Prolog,
* and an inbuilt compiler-compiler.
The Shen mission is to develop an ultra-portable version of Qi ...
The means of achieving this involves developing a small fast Lisp called
Kl which is rich enough to encode Qi,
but small enough to be easily mapped into other platforms or implemented
as a standalone.[3]
Hence, this project is maybe more aptly called kl.clj, as once you've
provided the basics, Shen boostraps itself.
Shen comes with a test suite to verify compatibility. It now luckily
passes, mainly thanks to Spiritualized[4].
Clojure and Shen can call each other, and (simple) Shen can be embedded
straight into Clojure using the 神 and defprolog macros.
The KLambda translator introduces implicit recurs to get it to work, but
does no full elimination/trampolining:
Tail recursion optimisation is a must and part of the Kl standard.
Quite of few of the reader routines for Shen will not work in a language
like Python which lacks it[3]
For more information, check out the README[5] or the Marginalia docs[6]
(admittedly somewhat illiterate).
The Shen version ported is 3.1. Released under the Shen License[7]. Doc
strings taken from Shen Mode[8] by Eric Shulte.
cheers, Håkan
[1] http://shenlanguage.org/
[2] http://www.lambdassociates.org/
[3] http://shenlanguage.org/Documentation/shendoc.htm
[4] http://youtu.be/DBIbTqKHPow
[5] https://github.com/hraberg/shen.clj
[6] http://ghettojedi.org/shen.clj
[7] http://shenlanguage.org/license.html
[8] https://github.com/eschulte/shen-mode
--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en