私は、ユーザーからリストを取得し、このリストを1つの簡略化リストにまとめた関数を作成しています。この関数はリストの最初の項目だけを返すように見えますが、残りの部分は返しません。なぜこれをやっているの?なぜ私のLisp関数は私にこの出力を与えていますか?
例:
> (flatten '(a() b (c d))
(a b c d)
これは私がこれまで
(defun flatten (list)
(cond
((null list)t)
(list (first list) (rest list))
(t(append (flatten (first list))
(flatten (rest list)))
(t(cons (first list (flatten (rest list))))))))
それは、あなたが更新されたコードを元の質問を編集している
> (flatten '(a() b (c d)))
(NIL B (C D))
'(リスト(最初のリスト))' - 最初の要素だけを返すように指示しているからですか? – melpomene
@melpomene私はちょうど私が行ったことを理解しました。明確化のためにありがとう –
あなたのコードはこう言っています: '(ヌルリスト)'(すなわち、 'list'が空/ nilならば)' t'を返します。それ以外の場合、 'list'(つまり、listが空でない/無しでない場合)、最初の要素を取得して無視し、残りの部分(最初の要素を除くすべて)を取得して返します。最初の2つの条件の1つが常に真であるため、残りのコードは無関係です。 – melpomene