yonatan edited this page Dec 31, 2010 · 90 revisions

There used to be an embedded REPL here, but apparently github doesn’t allow embedding scripts or swfs in wiki pages anymore.

The REPL swf is here, you might need to grab its edge and drag it into place, since it was meant to be viewed at 550×400. There are also some code samples and an online las3r editor here.

What functions are available?
The repl is currenly loading all code from las3r.core.lsr.
Documented here.

Hey! This looks like Clojure!
Las3r is based on the Clojure source code, so they have a lot in common. For instance, the reader is almost a line-by-line port of the Clojure reader. So if you know the syntax of Clojure, you know the syntax of las3r.

However, las3r should not be considered a port of Clojure.

Why not?
There are some important differences. For example:

  • Clojure has lots of support for concurrent programming. Las3r has none. There’s no such thing as concurrency in Flash, so this was a no-brainer.
  • Clojure has “proper” arbitrary precision integers and ratios, Las3r uses the native (floating-point) AS3 numbers.

What’s something fun to try?

(def pet (let [p (new flash.display.Sprite) g (. p graphics)]
  (doto g
    (beginFill 0xFF0000)
    (drawRect 0 0 50 50)
   (. *stage* (addChild p)) p))
(. *stage* (addEventListener "enterFrame" (fn [e] (set! (. pet x) (+ (. pet x) 2)))))

Compiler or interpreter?
Each lisp form is compiled directly to AVM2 bytecode and then loaded into the hosting swf’s application domain. This is analogous to how how Clojure compiles and dynamically loads Java compilation units.

Can you compile lisp “ahead-of-time” to a swf?
Yes! For example, the repl you see above is loading a swf that contains all the bytecode for las3r.core.

What’s it good for?
las3r is easy to embed. For example, you can drop the included las3r repl into any flash or flex application. This makes it a useful tool for runtime inspection and tweaking. Eventually, las3r should be a good language for writing Flash apps and games.

Is there an emacs mode?
Yes. las3r-mode.el is included in the source tree. Also included: basic support for sending lisp forms from emacs to Flash for evaluation.

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.