意図しない変数補足と対策について LOL(OnLisp) に沿ってまとめます。 nif (numeric if) をどう定義するかを例にします。nif は、条件部が負の数、0、正の数のどれかに応じた処理をするマクロです。以下は期待する挙動です。 (nif 0 "positive" "zero" "negative") ;;=> "zero" (nif 3 "positive" "zero" "negative") ;;=> "positive" (nif -3 "positive" "zero" "negative") ;;=> "negative" 次のような定義で問題ないように見えます。 (defmacro nif-buggy (expr pos zero neg) `(let ((obscure-name ,expr)) (cond ((plusp obscure-name) ,po

