0

先生から言われたことによると、ローカル変数の宣言には let を、グローバル変数の宣言には setf を使うべきです。

次のコードを実行してみました:

(let (state-list (problem-initial-state problem))
  (print state-list))

そして私はNILを取得します。

ただし、次のことを試すと:

(setf state-list (problem-initial-state problem))
  (print final-list)

目的の値 (問題の初期状態の問題の値) を取得します。

何故ですか?

PS: 初心者向けの質問で申し訳ありません。C のバックグラウンドを持っているため、LISP に慣れるのに苦労しています。

4

1 に答える 1

2

letフォームにいくつかのかっこがありません:

(let ((a 1)
      (b 2))
  (print (list a b)))

印刷されます(1 2)

あなたのフォーム

(let (state-list (problem-initial-state problem))
  (print state-list))

とにバインドstate-listします。nilproblem-initial-stateproblem

于 2016-11-09T18:40:28.160 に答える