• 締切済み

LISPの間違いを指摘して欲しいのですが・・・

(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”のプログラムを作りたいのですが上記を作ってみましたがうまくいきません。 どこが悪いのでしょうか?

みんなの回答

  • hpsk
  • ベストアンサー率40% (48/119)
回答No.3

原因は変数名に't'を使ってしまっていることですね。 't'はCommon Lispでは真偽値の「真」を表す記号に使われているので、変数名に使ってはいけないのです。 変数名を変えるのが無難ですが、 意地でもtを変数名として使いたければ (shadow t) としてから、質問文のコードを実行しましょう。 shadowを実行した後、真偽値としてtを使いたいときは lisp:t(処理系によってはcommon-lisp:t) と明示的にパッケージを指定しなければいけません。

Sleeping-lion
質問者

お礼

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

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

おかしくないような感じですが、 どういう風にうまくいかないのでしょう? また、処理系はなんですか?

Sleeping-lion
質問者

お礼

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

  • ganzou
  • ベストアンサー率29% (25/85)
回答No.1

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

関連するQ&A