Message from discussion
Pull requests
Received: by 10.66.82.2 with SMTP id e2mr3461706pay.40.1343790086736;
Tue, 31 Jul 2012 20:01:26 -0700 (PDT)
X-BeenThere: lispyscript@googlegroups.com
Received: by 10.68.117.7 with SMTP id ka7ls2929951pbb.9.gmail; Tue, 31 Jul
2012 20:01:26 -0700 (PDT)
Received: by 10.68.233.5 with SMTP id ts5mr2592239pbc.20.1343790086576;
Tue, 31 Jul 2012 20:01:26 -0700 (PDT)
Date: Tue, 31 Jul 2012 20:01:26 -0700 (PDT)
From: Santosh Rajan <santra...@gmail.com>
To: lispyscript@googlegroups.com
Message-Id: <532085f9-0419-49c9-b056-c46d5975549f@googlegroups.com>
In-Reply-To: <77F6ADF5E61045E3B35DAC0CC9A250DE@gmail.com>
References: <77F6ADF5E61045E3B35DAC0CC9A250DE@gmail.com>
Subject: Re: Pull requests
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_19_32226389.1343790086292"
------=_Part_19_32226389.1343790086292
Content-Type: multipart/alternative;
boundary="----=_Part_20_26845605.1343790086293"
------=_Part_20_26845605.1343790086293
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Hi Irakli,
I have been busy with some other work and hence could not find time at the
moment. But I am with you on most of the issues and intend to add these
features in the next version. Also I have replied to you in private
regarding my detailed plans.
Thanks
Santosh
On Wednesday, 1 August 2012 03:14:38 UTC+5:30, Irakli Gozalishvili wrote:
>
> 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.
>
> 2. I removed node dependency, now lispy compiler can run in browser, in
> fact you can even embed script tags with lispy and it will transpile them
> at runtime. Here is small demo page I put up that does live translation of
> entered lisp to js http://jeditoolkit.com/lispyscript/ (it also saves
> changes between refreshes). Also in fact it loads lispy file as a script
> tag https://github.com/Gozala/lispyscript/blob/gh-pages/index.html#L23
>
>
> 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.
>
> 6. Tail call optimisations. At the moment I have implemented some very
> basic support for tail calls via clojure like `loop`
> http://clojuredocs.org/clojure_core/clojure.core/loop for example try
> following example:
>
> (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!
>
> --
> Irakli Gozalishvili
> Web: http://www.jeditoolkit.com/
>
>
------=_Part_20_26845605.1343790086293
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<div><br></div>Hi Irakli,<div>I have been busy with some other work and hen=
ce could not find time at the moment. But I am with you on most of the issu=
es and intend to add these features in the next version. Also I have replie=
d to you in private regarding my detailed plans.</div><div>Thanks</div><div=
>Santosh</div><div><br><br>On Wednesday, 1 August 2012 03:14:38 UTC+5:30, I=
rakli Gozalishvili wrote:<blockquote class=3D"gmail_quote" style=3D"margin=
: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
<div>
<div><span style=3D"font-size:14px">Hi Santosh,</s=
pan></div><div><span style=3D"font-size:14px"><br></span></div><div><span s=
tyle=3D"font-size:14px">I've being very excited about your lispyscript=
project and have being hacking on it a lot far past month. I also have sen=
d 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, alt=
hough I don't know if you agree with directions I took. At the moment I'm l=
ittle 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 pro=
ject life of it's own, although I prefer not to.</span></div><div><span sty=
le=3D"font-size:14px"><br></span></div><div><span style=3D"font-size:14px">=
Little overview of what I did and plan on doing:</span></div><div><span sty=
le=3D"font-size:14px"><br></span></div><div><span style=3D"font-size:14px">=
1. I do like clojure a lot & with clojurescript it even more tempting t=
o 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.</span></div=
><div><span style=3D"font-size:14px"><br></span></div><div><span style=3D"f=
ont-size:14px">2. I removed node dependency, now lispy compiler can ru=
n in browser, in fact you can even embed script tags with lispy =
and it will transpile them at runtime. Here is small demo page I put u=
p that does live translation of entered lisp to js <a href=
=3D"http://jeditoolkit.com/lispyscript/" style=3D"color:rgb(0,106,227)" tar=
get=3D"_blank">http://jeditoolkit.com/<wbr>lispyscript/</a> (it also s=
aves changes between refreshes). Also in fact it loads lispy file as a=
script tag <a href=3D"https://github.com/Gozala/lispyscript/blob/gh-p=
ages/index.html#L23" style=3D"color:rgb(0,106,227)" target=3D"_blank">https=
://github.com/Gozala/<wbr>lispyscript/blob/gh-pages/<wbr>index.html#L23</a>=
</span></div><div><span style=3D"font-size:14px"> </span></div><=
div><span style=3D"font-size:14px"><br></span></div><div><span style=3D"fon=
t-size:14px">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=3Dapplication/lispyscript` scrip=
t tags. Another one is for node that allows one to just require lispy =
modules <a href=3D"https://github.com/Gozala/lispyscript/blob/master/s=
rc/node.ls" style=3D"color:rgb(0,106,227)" target=3D"_blank">https://github=
.com/<wbr>Gozala/lispyscript/blob/<wbr>master/src/node.ls</a> doing tr=
anslation at runtime. </span></div><span style=3D"font-size:14px"></sp=
an><div><div><span style=3D"font-size:14px"><br></span></div><div><span sty=
le=3D"font-size:14px">4. I would like to make a proper website for lis=
py similar to the one coffee script to illustrating language features examp=
le by example.</span></div><div><span style=3D"font-size:14px"><br></span><=
/div><div><span style=3D"font-size:14px">5. I already rewrote most of the s=
pecial forms like function, try catch, if else.. as macros using `js*` =
;special forms (borrowed idea from clojurescript). I also intend to move ot=
her forms to macros & rewrite parser in a lisp itself.</span>=
</div><div><span style=3D"font-size:14px"><br></span></div><div><span style=
=3D"font-size:14px">6. Tail call optimisations. At the moment I have i=
mplemented some very basic support for tail calls via clojure like `loop`&n=
bsp;<a href=3D"http://clojuredocs.org/clojure_core/clojure.core/loop" style=
=3D"color:rgb(0,106,227)" target=3D"_blank">http://clojuredocs.org/<wbr>clo=
jure_core/clojure.core/loop</a><wbr> for example try following e=
xample:</span></div><div><span style=3D"font-size:14px"><font face=3D"Monac=
o"><br></font></span></div><div><div><font face=3D"Monaco">(loop [i 0]</fon=
t></div><div><font face=3D"Monaco"> (if (< i 5) </fon=
t></div><div><font face=3D"Monaco"> (println i) <=
/font></div><div><font face=3D"Monaco"> (recur (inc i)); loop =
i will take this value</font></div><div><font face=3D"Monaco">))</font></di=
v></div><div><br></div><div><br></div><div><span style=3D"font-size:14px">I=
n <a href=3D"http://jeditoolkit.com/lispyscript/" style=3D"color:rgb(0=
,106,227)" target=3D"_blank">http://jeditoolkit.com/<wbr>lispyscript/</a>&n=
bsp;to get an idea what it compiles to. I'll probably will be doing some wo=
rk to try to analyse functions to spot tail recursions and genera=
te `while` loop based solutions for such case.</span></div><div><span style=
=3D"font-size:14px"><br></span></div><div><span style=3D"font-size:14px">7.=
Once parser is rewritten I'll be changing it so that comments are included=
in the generated js too.</span></div><div><span style=3D"font-size:14px"><=
br></span></div><div><span style=3D"font-size:14px">8. Clojure has support =
for metadata via ^boolean form that can used as optional typing system. I'l=
l be adding support to that too to output annotated JS so tools like closur=
e compiler could take advantage of it.</span></div><div><span style=3D"font=
-size:14px"><br></span></div><div><span style=3D"font-size:14px">9. I alrea=
dy do translations of conventions like:</span></div><div><span style=3D"fon=
t-size:14px"><br></span></div><div><span style=3D"font-size:14px">(foo-bar =
1) -> fooBar(1)</span></div><div><span style=3D"font-size:14px">(foo? ba=
r) -> isFoo(bar)</span></div><div><span style=3D"font-size:14px"><br></s=
pan></div><div><span style=3D"font-size:14px">I plan on taking to a level, =
where idiomatic clojure code will output idiomatic JS code.</span></div><di=
v><span style=3D"font-size:14px"><br></span></div><div><br></div><div><span=
style=3D"font-size:14px">Please let me know if these plans go along with y=
our view of the project and if you intend on pulling in my changes.</span><=
/div><span style=3D"font-size:14px"><br clear=3D"all">Thanks!</span></div>
</div>
<div><div><br></div><span style=3D"color:rgb(153,153,153)">=
--</span><br style=3D"color:rgb(153,153,153)"><span style=3D"color:rgb(153,=
153,153)">Irakli Gozalishvili</span><br style=3D"color:rgb(153,153,153)"><s=
pan style=3D"color:rgb(153,153,153)">Web: <a style=3D"color:rgb(153,153,153=
)" href=3D"http://www.jeditoolkit.com/" target=3D"_blank">http://www.jedito=
olkit.com/</a></span><font color=3D"#999999"><br></font><div><br></div></di=
v>
</blockquote></div>
------=_Part_20_26845605.1343790086293--
------=_Part_19_32226389.1343790086292--