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] より。