0

HyperSpec によると、そのページについてDO(強調は私が提供):

do は、反復内でバインドされ、並列にステップ実行される任意の数の反復変数を受け入れます。

それでも、次のようDOな空の変数リストを受け入れることはできないようです:

(do (())
    ((cond n) (end-result))
  (cond-1..
  (cond-2..))

DO空の var リストを受け入れることができないというのは本当ですか? これには理由がありますか?(私は常にあると思いますLOOP)。

私はSBCLを実行しています。

4

2 に答える 2

3

の構文DOは、CommonLisp標準で定義されています。

do ({var | (var [init-form [step-form]])}*)
  (end-test-form result-form*)
  declaration*
 {tag | statement}*

Common Lisp Hyperspecを使用して任意のシンボルを検索し、特別な演算子とマクロの構文を見つけることができます。

構文からわかるように、Lispは変数形式のリストを期待しています。これらは、変数または変数のリスト、オプションの初期化フォーム、およびオプションのステップフォームのいずれかです。この構文では、で複数の変数を使用できますDO

ご覧のとおり、終了テストと結果フォームを組み合わせたリストは1つだけです。

于 2012-08-04T20:21:07.067 に答える