append を使用せずに、2 つのリストをパラメーターとして持ち、2 つのリストの連結を返す関数を作成するにはどうすればよいでしょうか。
2番目のリストの先頭を取得する方法は知っていますが、最初のリストに入れる方法と、リストの先頭もリストの場合はどうすればよいかわかりません。
append を使用せずに、2 つのリストをパラメーターとして持ち、2 つのリストの連結を返す関数を作成するにはどうすればよいでしょうか。
2番目のリストの先頭を取得する方法は知っていますが、最初のリストに入れる方法と、リストの先頭もリストの場合はどうすればよいかわかりません。
APPEND
(何らかの理由で)を使用せずにこれを行う必要がある場合は、おそらく次のようにします。
(concatenate 'list list1 list2)
これはおそらく宿題の質問であり、探している答えではない可能性が高いと思いますがCONCATENATE
、HyperSpec で詳細を確認できます。
LOOP または DO を使用できますか?
このようなものが動作します:
(defun my-concat (x y)
(loop
for o in (reverse x)
do (push o y)
finally (return y)))
ループがオプションでない場合は、再帰を使用することをお勧めします。