今日、LISP の学習を始めたばかりなので、まったくの初心者です。しかし、私は他の言語での経験があります。最後の要素がないことを除いて、リストをそのまま返す関数を作成しようとしました。
もっと簡単な方法があると確信しているので、とにかくこの関数を書き直すつもりですが、私のバージョンでは非常に珍しい出力が生成されました。記録のために、私は CLISP 環境を使用しています。
(defun my-butlast (L)
(if (null (rest L))
nil
(if (eq nil (my-butlast (rest L)))
(first L)
(cons (first L) (my-butlast (rest L)))
)
)
)
(my-butlast '(1 2 3 4 5))
これにより、出力が生成されました(1 2 3 . 4)
それで私の質問は、ポイントはどこから来たのですか?
また、実行しようとする(length (my-butlast '(1 2 3 4)))
と、不可解なエラーが表示されます。適切なリストは 4 で終わってはいけません。これはどういう意味ですか?