Manuel Odendahl's ParenScript is a neat Lisp-like sexpr-based syntax for Javascript (Manuel has more info in this weblog post).
The js macro compiles sexprs into Javascript:
(js
(defun foobar (a b)
(return (+ a b))))
==>
function foobar(a, b) {
return a + b;
}
You can use DO for iteration:
(js
(do ((i 0 (incf i))
(j (aref arr i) (aref arr i)))
((>= i 10))
(alert (+ "i is " i " and j is " j))))
==>
for (var i = 0, j = arr[i]; i < 10; i = ++i, j = arr[i]) {
alert("i is " + i + " and j is " + j);
}
ParenScript has macros:
(defjsmacro 1+ (form) `(+ ,form 1))
It also has an HTML generator:
(js
(defun add-div (name href link-text)
(document.write
(html ((:div :id name)
"The link is: "
((:a :href href) link-text))))))
==>
function addDiv(name, href, linkText) {
document.write("<div id=\"" + name + "\">The link is: <a href=\""
+ href + "\">s"
+ linkText + "</a></div>");
}
There's even an sexpr syntax for CSS.
The documentation looks excellent, including a complete reference as well as some tutorials. I'm totally never writing Javascript again.
Posted by jjwiseman at March 14, 2005 03:08 PM