

Lisp interpreter made with Action Script 3. - edu
http://www.solve-et-coagula.com/As3Lisp.html
The author talks about his work on <a href="http://www.solve-et-coagula.com/?p=8" rel="nofollow">http://www.solve-et-coagula.com/?p=8</a>.
======
Zak
It doesn't seem to support closures.

    
    
        User>(defun accgen (x)
                (lambda (y)
                   (incf x y)))
    
        ACCGEN
        User>(setf foo (accgen 5))
    
        <Interpreted Lisp Function>
        User>(funcall foo 5)
    
        NaN
        User>(let ((bar "bar"))
                (defun qux ()
                   (print bar)))
    
        QUX
        User>(qux)
    
        null
        User>

------
edu
He has released the source code of the interpreter: <http://www.solve-et-
coagula.com/?p=9>.

~~~
Zak
That's the first time I've looked at ActionScript code. Javascript has such an
elegant object system - they should have kept it.

~~~
spiralhead
Could be wrong but I think you can still use the prototype syntax if you want.

~~~
ascw
I know that the prototype syntax is available in as2, but I think it was
removed in as3. I agree that the prototype syntax is more elegant, but I
really believe Adobe was trying to appeal to Java and .NET developers.

~~~
spiralhead
"but I think it was removed in as3"

Wrong. I was curious so i tested it (i've been experimenting with Flex 2). The
following code outputs "blah blah":

var foo:Function = function() {}

foo.prototype.someMethod = function() { trace("blah blah"); }

new foo().someMethod();

I think the prototype syntax was kept to maintain backwards compatibility.

~~~
ascw
Thats cool, does it work with creating classes that way as well?

~~~
spiralhead
im assuming the above code is equivalent to:

class foo {

    
    
      public function someMethod() { trace("blah blah"); }
    

}

new foo().someMethod();

just different approaches to the same problem

------
aandreev
touche?

