by shigemk2

当面は技術的なことしか書かない

リスト遊び 3-3 eq

前回
リスト遊び 3-1 関数定義 - by shigemk2

  • 変数とはポインタを格納する箱である
  • 変数へデータを代入することは、そのデータへのポインタを格納することである
  • 変数への評価とは、ポインタが指しているデータを取り出すことである
  • 変数から変数への代入とは、ポインタをコピーすることである
  • シンボル、整数は同じポインタを指すが、文字列、リストは同じポインタを指さない
;; 整数
(setq x 2)
=>2
(setq y 2)
=>2
(eq x y)
=>t
(setq z y)
=>2
(eq y z)
t

;; シンボル
(setq x 'dog)
=> dog
(setq y 'dog)
=> dog
(eq x y)
=> t
(setq z y)
=> dog
(eq y z)
=> t

;; 文字列のポインタ
(setq x "dog")
=>"dog"
(setq y "dog")
=> "dog"
(eq x y)
;; 違うポインタを指しているからnil
=> nil
(setq z y)
;; 同じポインタを指しているからt
=> "dog"
(eq y z)
=> t

;; 定義されるリストや文字列は、それぞれ違う
;; ポインタを指している
(setq x '(1 2))
=>(1 2)
(setq y '(1 2))
=>(1 2)
(eq x y)
=>nil
(setq z y)
=>(1 2)
(eq y z)
=>t

(defun Null (x)
  (cond
   ((eq x nil) t)
   (t nil)))
=>Null
(Null t)
=>nil
(Null nil)
=>t

(defun Null (x)
  (eq x nil))
=>Null
(Null nil)
=>t

リスト遊び―Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language)

リスト遊び―Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language)