「プログラミング言語の基礎概念」のために作ったEmacs拡張

Posted on
Emacs CoPL
thumbnail

プログラミング言語の基礎概念」の演習問題を解くためのEmacs拡張を作ったので紹介します。

動機

出版社のページ

関数型言語MLの一種Objective Camlを題材としてプログラミング言語の意味論,型システム,プログラミング言語の基礎概念,これらの概念間の数学的な関連を学ぶ.オンライン演習システムを用いて,「証明」を解答とする演習問題の正誤をWeb上で自動判定することもできる.

とあるとおり、この本にはオンライン演習システムが用意されていて、演習問題の採点をしてもらえます。

採点によって自分の理解度を確認できてとても便利なのですが、長い導出をエディタの補助なしに完成させるのは大変です。

なのでEmacsの

  • major-mode
  • Flycheck拡張

を作りました。

major-mode

igjit/copl-mode

シンタックスハイライトを実装しました。

一応、波括弧 {} のインデントに対応していますが実装は超手抜きです。

Flycheck拡張

igjit/flycheck-copl

Flycheckで導出が正しいかチェックできるようにしました。

導出のチェックは著者の五十嵐先生が公開されているcopl-toolsをdockerで動かしています。(igjit/docker-copl-tools)

所感

Emacsで割と快適に演習問題を解くことができるようになりました。

得られた知見: