xyzzy QandA
Emacs Lisp と Commo Lisp の違いは?
管理番号 135
最終更新 2003/06/24 00:16:28
・文字の表現 ?a → #\a
・ベクタの表現 [...] → #(...)
・if の文法
| Emacs では,
|
| if condition then-form else-forms*
|
| でも xyzzy では(というか Common Lisp では),
|
| if condition then-from [else-from]
|
| となってます。ですから,Emacs から移植する場合は,
|
| if condition then-from (progn else-forms*)
|
| てな感じで progn で囲ってやらなければなりません。
・スコープの違い(Emacsはダイナミック,xyzzyはレキシカル)
| 宣言すれば逃げれる。
・バッファローカル変数のちょっとした違い
| Emacs で,(defvar foo nil) とやってから (make-local-variable 'foo)
| というのをよくやりますが,xyzzy では defvar した時点で foo が
| special になってしまうので,バッファローカルの値を参照できなくなっ
| てしまいます。
・動きが同じで関数名が違うもの
| current-buffer → get-selected-bufferとか。
・関数名が同じで動きが違うもの(^^;
| beginning-of-buffer とか。
・interactiveの微妙な違い
| (defun foo (arg)
| (interactive "p")
| ...)
|
| において,Emacs では数引数がないときは nil になるみたいですが,
| xyzzy では引数が足りなくてエラーになるので,
|
| (defun foo (&optional arg)
| (interactive "p")
| ...)
|
| としなければなりません。それから,P もたぶん全然違います。
・除算 / → truncate
| 分数になるってこと。当然,文脈に依りますけど。
・define-keyとかglobal-set-keyの引数
| Emacs: (global-set-key "\C-a" 'beginning-of-line)
| xyzzy: (global-set-key #\C-a 'beginning-of-line)
・文字と数値の違い
・formatの引数の数
| Emacs: format fmt-string &rest args
| xyzzy: format stream fmt-string &rest args
|
| fmt-string の書式文字も違いますね。
・パッケージの有無
| Common にしかない。
あたりだそうです。
[xyzzy:00085], [xyzzy:00089], [xyzzy:00093] より。