プロが教える店舗&オフィスのセキュリティ対策術

emacsでcmmon lispのプログラムを作成します。
my-equal(A, B)=
if A is an atom then
if B is an atom then (eq A B)
else if B is an atom then nil
else if (car A)=(car B) then (cdr A)=(cdr B)
else nil というのです。自分が考えたのは、
defun my-equal(x, y)=
(cond ((atom x) (atom y)) (eq x, y)
(atom) (t, nil)
((car x)=(car y) (cdr x)=(cdr y)) (nil)) というのでよろしいのでしょうか?
また、4行目(この全文の)の意味がいまいち分かりません。

A 回答 (2件)

「よろしいのでしょうか?」で何を聞いているのかちょっとわかりかねるのですが, 「これで正しい Common Lisp のプログラムになっているか」ということでしょうか? もしそうなら正しくないです. 1行目の


defun my-equal(x, y)=
というところからしておかしい. Common Lisp における関数定義の書き方を調べてください. 他にも突込みどころはいっぱいありますが....
「4行目(この全文の)」は
if B is an atom then (eq A B)
ですか?
... おっと, 元のやつからおかしいのか. A がアトムじゃないときにどうするのかわからん.

この回答への補足

申し訳ございません。1行分まちがえてました。意味が分からないのは、5行目でした。

補足日時:2010/05/11 20:32
    • good
    • 0

確かにわからん.


でも, それを聞くべきは「この設問をした人」ではないか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!