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

(setq a 1)
(setq b 2)
(setq c 3)
(setq d 4)
(setq e 5)
(setq f 6)
(setq g 7)
(setq h 8)
(setq i 9)
(setq j 10)
(defun wa(q r s t u v w x y z) (+ q r s t u v w x y z))
(wa a b c d e f g h i j )
55

1から10までの合計値を求める”LISP”のプログラムを作りたいのですが上記を作ってみましたがうまくいきません。 どこが悪いのでしょうか?

A 回答 (3件)

原因は変数名に't'を使ってしまっていることですね。


't'はCommon Lispでは真偽値の「真」を表す記号に使われているので、変数名に使ってはいけないのです。

変数名を変えるのが無難ですが、
意地でもtを変数名として使いたければ
(shadow t)
としてから、質問文のコードを実行しましょう。

shadowを実行した後、真偽値としてtを使いたいときは
lisp:t(処理系によってはcommon-lisp:t)
と明示的にパッケージを指定しなければいけません。
    • good
    • 0
この回答へのお礼

返事が遅れてしまい申し訳ありませんでした。
ご指摘の通りにやってみたところうまく実行できました。
ありがとうございました。
(真偽値の事を忘れていました・・・)

お礼日時:2005/01/26 10:39

おかしくないような感じですが、


どういう風にうまくいかないのでしょう?

また、処理系はなんですか?
    • good
    • 0
この回答へのお礼

変数名を直すことで解決できました。
ありがとうございました。

お礼日時:2005/01/26 10:40

"+"って2項演算子じゃないですか?

    • good
    • 0

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