1
我想在Lisp中編寫深度反轉函數,只依賴Lisp提供的原始反轉函數以及其他一些常見的東西。我認爲它使用的地圖,比如是那種比較容易做到這一點:Lisp中的深度反轉函數
(defun deep-reverse (list)
(if (listp list)
(mapcar #'deep-reverse
(reverse list))
list))
但是關於不使用這些地圖,或其他結構的東西。僅僅依靠的東西,如if
,reverse
,append
,null
,nil
,listp
,,cons
,car
,cdr
等基本的東西。我可以這樣做一個級別的反向,像這樣:
(defun reverse (list)
(if (null list)
'nil
(append (reverse (cdr list))
(cons (car list) 'nil))))
但我怎麼能達到這樣的深反向?我的意思是深度反轉,如果輸入的函數是((1 2 3) (4 5 6))
,輸出應該是((6 5 4) (3 2 1))
。