本記事は言語実装 Advent Calendar 2016の最終日の記事です。話題が多岐に渡っていて楽しいアドベントカレンダーでしたね。前日はEgisonのリーマン幾何学用記法の話でした。 BiwaSchemeは筆者が作っているJavaScriptによるScheme実装です。先月の話ですが、list-sortという関数を修正し、比較に使うScheme関数を受け取れるように改善しました。BiwaSchemeは中間言語方式(VM方式)かつライブラリを全てJSで実装するという方針になっているため、実装に少し工夫が必要でした。本稿ではそのことについて解説します。 中間言語方式 JavaScriptでScheme処理系を実装する場合、いくつかの方針が考えられます。 インタプリタ方式 (S式を一つずつ読み、評価する) コンパイラ方式 (プログラム全体を等価なJavaScriptに変換する 中間言語方式