Sweet.jsはJavaScriptでマクロ機能を実現するライブラリです。

JavaScriptでSchemeやRustのようなマクロを実現するライブラリがSweet.jsです。柔軟に自前の構文を定義できるようになります。


インストールします。


例です。idというマクロを定義します。


sjsコマンドでコンパイルします。確かに展開されました。


次はmというマクロを定義します。


こちらも展開されました。


変数を定義するマクロです。


関数を定義するdefというマクロを作ると…


functionに置き換わります。長ったらしい名称からおさらばです。

Sweet.jsを使うと既存のJavaScriptの中にマクロを組み込めるようになります。そしてコンパイルを実行することでマクロ部を展開して利用できます。よりJavaScriptを柔軟に使いこなせるようになりそうです。

Sweet.jsはJavaScript/node.js製、BSD Licenseのオープンソース・ソフトウェアです。

MOONGIFTはこう見る

一般的にプログラミング言語では関数やオブジェクト、構造体といった機能があり、それを使うことでコード量を減らしたり、エレガントなコードが書けるようになります。しかしさらにそれを簡略化するための仕組みとしてマクロがあります。Schemeなどのマクロは独自の構文を定義して、それをそのまま使えるようにしています。

JavaScriptには元々マクロ機能がないため、Sweet.jsを使うことで擬似的に実現しています。そのため一旦コンパイルを挟まないといけないのが難点ですが、使いどころによってはとても面白いことができそうです。プログラミングを生むプログラミングとして考えてみても面白いでしょう。

sweet.js

mozilla/sweet.js