[parenscript-devel] Lexical scoping with LAMBDA

Red Daly reddaly at gmail.com
Thu Sep 8 20:22:14 UTC 2011


Super, thanks!  Maybe we should suggest including tests with bug fixes/ reports.

Red

On Sep 8, 2011, at 9:06 PM, Vladimir Sedach <vsedach at gmail.com> wrote:

> Actually, I added runnable tests (via cl-javascript) earlier this
> year. There's just not very many test cases.
> 
> The test cases themselves are in t/eval-tests.lisp
> 
> Vladimir
> 
> On Tue, Sep 6, 2011 at 7:45 PM, Red Daly <reddaly at gmail.com> wrote:
>> Bugs are a major theme on this list.  As far as I know, Parenscript lacks
>> unit tests that run the compiled Javascript code. Is that still correct?
>>  Perhaps it is time to introduce this feature?  There are a few options
>> here:
>> - cl-javascript is a pure lisp implementation of ECMAScript, and it actually
>> works for most normal language cases
>> - cl-spidermonkey uses the FFI to interact with Mozilla's JS engine
>> - v8, either through the FFI or a simple command line
>> This should allow the project to test much more rigorously than the current
>> kinda kludgy test framework.
>> As a reference, I currently do this in
>> PSOS: https://github.com/gonzojive/paren-psos/blob/master/test/test-package.lisp
>> - Red
>> On Tue, Sep 6, 2011 at 11:48 PM, <sblist at me.com> wrote:
>>> 
>>> It appears as though there might be a gap in the lexical scoping
>>> implementation in the compiler:
>>> 
>>> (ps (lambda (x)
>>>      (let ((x 1))
>>>        (foo x))
>>>      (incf x)))
>>> =>
>>> "function (x) {
>>>    var x = 1;
>>>    foo(x);
>>>    return ++x;
>>> };"
>>> 
>>> vs.
>>> 
>>> (ps (let ((x 10))
>>>      (let ((x 1))
>>>        (foo x))
>>>      (incf x)))
>>> 
>>> "var x = 10;
>>> var x33 = 1;
>>> foo(x33);
>>> ++x;"
>>> 
>>> Although function parameters have their own lexical bindings,
>>> the environment still needs to be informed of those bindings
>>> so that LET forms in the function body can rename any conflicts.
>>> 
>>>        Scott
>>> 
>>> _______________________________________________
>>> parenscript-devel mailing list
>>> parenscript-devel at common-lisp.net
>>> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>> 
>> 
>> _______________________________________________
>> parenscript-devel mailing list
>> parenscript-devel at common-lisp.net
>> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>> 
>> 
> 
> _______________________________________________
> parenscript-devel mailing list
> parenscript-devel at common-lisp.net
> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel




More information about the parenscript-devel mailing list