トップ «前の日記(2012-11-28) 最新 次の日記(2012-12-06)» 編集

Route 477



2012-12-05

[lisp][javascript] JavaScriptにコンパイルされるCommonLisp風言語、JSLispが面白そう

Lisp Advent Calendar 2012 5日目の記事です。

JavaScript Weeklyから来たメールを眺めていたら、こんなJSデモを見つけた。

作者は https://github.com/6502 の人らしい。見てみると、「JSLisp」というリポジトリが。 またyet anotherなLisp in JSかと思ったが、READMEを見ているとけっこう面白そうな記述が:

  • Lisp風言語からJavaScriptにコンパイルする
  • CLライクなlisp-2 (ていうか、マクロと関数を同名にできるから厳密にはlisp-3だよと書いてある)
  • ネイティブ型はJSの型を使う、listはarray (car/cdrはない)
  • defmacro, back quote
  • optional引数、keyword引数
  • defmethod, defobject

githubのNetworkを見ると、去年の夏からやっていることが分かる。

http://www.jslisp.org/ が公式サイトのようだ。permalinkがない :-( ので個別にリンクが貼れないが、以下のように凝った機能がいろいろあるみたいだ。

  • Example : ルービックキューブとかチェスとか六角マップ上の最短距離探索とかあって格好いい
  • Reader : リーダマクロがあるらしい
  • Static checks : 使われていない変数などのコンパイル時検査
  • Generic funcitons : 関数の挙動を条件別に定義できる
  • Treeshaker : 使われていない(=main関数から辿れない)関数を除去してコンパイルする

まだあまりドキュメントが無く、残念ながらgit masterのコードは手元でうまく動かせなかったが、なかなか気になる処理系だ。