・ ( = ) ( 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