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))
。