Hacker News new | past | comments | ask | show | jobs | submit login
Lisp interpreter made with Action Script 3. (solve-et-coagula.com)
24 points by edu on Aug 22, 2007 | hide | past | favorite | 9 comments



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>


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


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


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


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.


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


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


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


touche?




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: