神.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