・ ( = ) ( eq ) ( equal ) の違いについて

( = ) で判定できる引数は、数値と文字列だけ

リストや図形名なんかは不可です

コマンド:(setq a 1)
1
コマンド:(= a 1)
; OK
T

コマンド:(setq a '(1 2 3) )
(1 2 3)
コマンド:(= a '(1 2 3) )
; NG
nil

( eq ) は2つの式が同一のオブジェクトかどうかを判定 (参照先が同じかどうか)

コマンド:(setq a '(1 2 3) )
(1 2 3)
コマンド:(setq b '(1 2 3) )
(1 2 3)
コマンド:(setq c b)
(1 2 3)
(eq a b)
; 評価以前の判定だから nil が返ります(参照先が違う)
nil
(eq b c)
 ; 参照先が同じ
T
(eq a c)
; 評価以前の判定だから nil が返ります(参照先が違う)
nil

( equal ) は2つの式の評価結果が等しいかどうかを判定

コマンド:(setq a '(1 2 3) )
(1 2 3)
コマンド:(setq b '(1 2 3) )
(1 2 3)
コマンド:(setq c b)
(1 2 3)
(equal a b)
T
(equal b c)
T
(equal a c)
T