Common LispでWebアプリケーションを作る練習として、簡単なSchemeの開発環境的なものを作った。

Javascript製のSchemeインタプリタBiwaschemeにエディタ(CodeMirror)をつけたもの

HTML5の機能を使っているので対応したブラウザが必要 (Chrome、Firefox、IE11で確認済) 書いたコードをブラウザのローカル領域に保存できる(Local Storage) Schemeインタプリタは別スレッド(Web Worker)で動いており、無限ループに入ってしまったときなどにSchemeインタプリタだけ再起動できる(Killボタン)

評価 何も選択せずにEvalボタンを押すとファイル全体が評価される 領域を選択してEvalボタンを押すとその領域が評価される 括弧にカーソルを合わせてハイライト表示させた上で Ctrl+J でその式だけを評価できる(式単位の評価)

自動インデント Returnで改行するとその時点で適切な位置に移動する Tabを押すとその行がインデントされる 領域を選択してTabを押すとその領域がインデントされる

ファイル操作 Newボタンでファイルの新規作成 ファイルを選択した状態でRenameで名称変更、Deleteで削除ができる 何かコードを評価したときや、ファイル操作をしたタイミングで状態が自動保存される 右上の設定ボタンからClear localStorageを選ぶとブラウザに保存されていた情報が全て削除される



Schemeインタプリタの仕様はBiwaschemeのサイトを参照。R7RS対応とされているがマクロ定義は伝統的マクロだったりと少し異なる部分もある。

BiwaschemeではSchemeインタプリタからJavascriptのコードも呼べるが、Web Worker上で動いているのでSchemeインタプリタからJavascriptを呼んでもDocumentやWindowはいじれない。