TL;DR

Squint is a light-weight dialect of ClojureScript with a compiler and standard library.

コンパイラと標準ライブラリを備えた、ClojureScript の軽量な方言。JavaScript とのやり取りの軽さやバンドルサイズを重視している。

なぜ必要か

ClojureScript の完全な代わりではなく、小さな JavaScript を生成したい場面に向いている。公式では、Cloudflare Workers、Node.js のスクリプト、GitHub Actions などを用途に挙げている。

仕組み

標準ライブラリは ClojureScript のものではなく、一部を再実装した squint-cljs/core.js を使う。データ構造は JavaScript の組み込みのものだけで、マップはオブジェクト、ベクターは配列になる。キーワードは文字列に変換される。assoc や conj は浅いコピーを返し、assoc! や conj! はその場で書き換える。出力は ES モジュールで、既定の拡張子は .mjs。設定はプロジェクトのルートの squint.edn に書く。

npm install squint-cljs で入れ、npx squint run example.cljs でコンパイルと実行をまとめて行える。Vite のプラグインや React 向けの例もある。ClojureScript と同じ標準ライブラリやデータ構造の挙動がほしいときは、同じ作者の Cherry が案内されている。

関連

出典