[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bep] learning lisp: cons
- To: bep@argv.org
- Subject: Re: [bep] learning lisp: cons
- From: Reiko TAKAHASHI <HFC03614@nifty.ne.jp> (高橋玲子)
- Date: Tue, 17 Jul 2001 07:35:40 +0900
- Delivered-To: mailing list bep@argv.org
- Mailing-List: contact bep-help@argv.org; run by ezmlm
r高橋です。
Reply TAKAHASHI Naoto <ntakahas@...>'s message:
} 引数が dotted pair のとき、car はピリオドの左側を、cdr はピリオドの右
} 側を返します。
}
} (car '(a . b)) => a
} (cdr '(a . b)) => b
}
} (car '(a b)) と (car '(a . b)) はどちらも a で同じになりますが、
} (cdr '(a b)) と (cdr '(a . b)) は前者が (b) 、後者が b と別になります
} ので注意して下さい。
これは、(car)がリストの先頭「要素」を返すのに対して、(cdr)はあるリスト
から先頭要素を除いた残りの「リスト」を返すから、ということですね?
} さて、auto-mode-alist は dotted pair のリストです。つまり単純化すると、
} ((a . b) (c . d) (e . f) (g . h) ...) という形をしてます。ですからこれ
} に新しい要素を追加する場合は、
}
} (setq auto-mode-alist
} (cons (cons なんとか かんとか)
} auto-mode-alist))
}
} と書くことになります。内側の cons で新しく追加する要素となる dotted
} pair を作り、外側の cons でそれをリストの先頭に追加します。
.emacsの、たとえばメールアカウントの情報を書くところは、リストですよね
……?
そこでは(cons)は使われていなくて、全部(setq)でdotted pairが作られていると
思うのですが、わざわざ(cons)を使う場合と、(setq)だけでいい場合とはどう違
うのでしょう?
**-***-***-***-***-***-***-***-***-***-***-***-**
Reiko TAKAHASHI (高橋玲子)
E-mail: HFC03614@...
ICQ UIN: 85924121 (Twinkle)
**-***-***-***-***-***-***-***-***-***-***-***-**