letcheck 20160202.1148(in MELPA)
Check the erroneous assignments in let forms

概要

Lispのlet式は他言語を使っている人にとってハマることがあります。

というのは、ひとつのlet式のローカル変数は同時に初期化されるため、
前の変数を参照できないからです。

たとえばRubyでこのようなコードを

x = 1
y = x + 1
[x, y]

elisp/Common Lisp/Schemeに直接変換してもうまくいきません。

;;; 間違ったlet式
(let ((x 1)
      (y (+ x 1)))
  (list x y))

xがvoidであるため、エラーになります。

正しくはlet*を使うことです。

letcheck.el には M-x letcheck-mode というマイナーモードが定義されていて
参照されてない変数をハイライトします。

20150801040136.png
Fig1: voidな変数xがハイライトされて誤用だとわかる

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてletcheckを使う方は
以下のコマンドを実行します。

M-x package-install letcheck

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name letcheck


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。