Posted by & filed under いろいろ.


JavaScriptでマクロが使えるというsweet.jsを使ってみました。

forOfはES.nextのfor-ofです、といってもDense Arrayにしか対応していませんが。$arrayを束縛するために無名関数で囲っています。Closure CompilerのADVANCEDモードを使えばこの関数呼び出しを消せるのですが、マクロ側で何か対処したいですね。Lispのgensym的なことはできないのでしょうか。

次のnullSafetyは途中にnullがあっても安全にプロパティチェーンをたどれるようなコードに展開されます。繰り返しパターンがどのcaseに適用されているのか追いかけるのに苦労しました。

最後のzipはpythonなり配列操作ライブラリによくあるやつです。これはforOfと違い配列を束縛していないので、zip(a of func1(), b of func2()) のようなことをすると関数が何度も呼び出されてしまいます。$array…はargumentsなどに束縛できるのですが、そうすると$n…への代入が書けなくなってしまいました。

あとはLispのunquoteのようにマクロ展開時に式を評価させる方法が見つかりませんでした。

とはいえ色々とおもしろそうなので、隙があれば今のプロダクトで使おうと計画中です。その為にもちゃんとConstなんとかさんのツール群を追いかけて自分で機能追加できるくらいにならなくては。


関連文書:

  • 関連文書は見つからんがな

Comments are closed.