【发布时间】:2017-03-07 12:20:56
【问题描述】:
这是我尝试的代码。
(defun f (lst)
(cond ((null lst) nil)
((listp (first lst))
nil
(f (car lst)))
(t (cons (first lst)
(list (f (cdr lst)))))))
(f '(a (b) c))
==> (A (B NIL))
我的目标是(f '(a (b) c)) 应该返回(a . ((b . nil) . (c . nil)))。
或者(f '(a b))应该返回(a . (b . nil))。
这个意思是过程缺点单元格。
我该如何解决?
我想知道进程符号的另一件事。
要处理我使用的符号,请尝试 (format t " . ") 并递归打印列表,
但进展并不顺利。
我应该从哪里开始修改?
【问题讨论】:
-
(a . ((b . nil) . (c . nil)))与(a (b) c)相同(只是可视化不同,就像 4 个季度和 1 美元是相同数量的钱)。你想让它返回一个字符串"(a . ((b . nil) . (c . nil)))"吗? -
我想要不是字符串。像这样 (a . ((b . nil) . (c . nil)))
-
让你的函数 return
(a . ((b . nil) . (c . nil)))不使用标准格式(a (b) c)是不可能的。您可以返回字符串表示形式,也可以将字符串表示形式打印到屏幕上(不返回)。 -
感谢您的帮助
标签: lisp common-lisp