Hi Santosh,
I've being very excited about your lispyscript project and have being hacking on it a lot far past month. I also have send you bunch of pull requests, but have never heard from you back :( I don't know what is a reason, but I really want to move this project forward, although I don't know if you agree with directions I took. At the moment I'm little upset that I can't publish my improvements into npm or get them to them pulled in. Please let me know what's your plan are on this. If you don't intend on collaborating I'll probably rename my fork and give the project life of it's own, although I prefer not to.
Little overview of what I did and plan on doing:
1. I do like clojure a lot & with clojurescript it even more tempting to share syntax so that programs / libraries written in clojurescript could run on lispy. So I did bunch of changes to make syntax interoperable. It does not really runs clojurescript code just yet, but it definitely makes reading code a lot easier if you come from clojure.
3. I borrowed some ideas from coffcee script, that helps development process one already mentioned above which allows one to just load lispy files on page via `type=application/lispyscript` script tags. Another one is for node that allows one to just require lispy modules https://github.com/Gozala/lispyscript/blob/master/src/node.ls doing translation at runtime.
4. I would like to make a proper website for lispy similar to the one coffee script to illustrating language features example by example.
5. I already rewrote most of the special forms like function, try catch, if else.. as macros using `js*` special forms (borrowed idea from clojurescript). I also intend to move other forms to macros & rewrite parser in a lisp itself.
(loop [i 0]
(if (< i 5)
(println i)
(recur (inc i)); loop i will take this value
))
In http://jeditoolkit.com/lispyscript/ to get an idea what it compiles to. I'll probably will be doing some work to try to analyse functions to spot tail recursions and generate `while` loop based solutions for such case.
7. Once parser is rewritten I'll be changing it so that comments are included in the generated js too.
8. Clojure has support for metadata via ^boolean form that can used as optional typing system. I'll be adding support to that too to output annotated JS so tools like closure compiler could take advantage of it.
9. I already do translations of conventions like:
(foo-bar 1) -> fooBar(1)
(foo? bar) -> isFoo(bar)
I plan on taking to a level, where idiomatic clojure code will output idiomatic JS code.
Please let me know if these plans go along with your view of the project and if you intend on pulling in my changes.
Thanks!