String 显示字符串列表而不是显示一个字符串

String 显示字符串列表而不是显示一个字符串,string,common-lisp,clisp,String,Common Lisp,Clisp,这只是Common Lisp中的一个凯撒密码,旋转键设置为5 我有一些限制 输入必须作为列表进行递归读取和处理。 不允许使用变量、数组、循环和程序。 输出必须是字符串而不是列表。 程序必须只使用递归 (defun encode(expr);定义函数funcName(参数) ;如果列表为空,则不适用 (cond((null expr)nil);条件(test1 action1) ;检查表达式是否为原子,然后进行加密 ((原子表达式)(encrot表达式));测试2查看是否有一个或更少的原子 ;将e

这只是Common Lisp中的一个凯撒密码,旋转键设置为5

我有一些限制
输入必须作为列表进行递归读取和处理。
不允许使用变量、数组、循环和程序。
输出必须是字符串而不是列表。
程序必须只使用递归

(defun encode(expr);定义函数funcName(参数)
;如果列表为空,则不适用
(cond((null expr)nil);条件(test1 action1)
;检查表达式是否为原子,然后进行加密
((原子表达式)(encrot表达式));测试2查看是否有一个或更少的原子
;将encrot的结果添加到列表中,并
(t(cons)(encode(car expr))(encode;如果其他所有操作都失败,则将运行
(出口)
;强制转换对象,然后将字符移位5
(字符串(int-char(encrot2(+5)char-int(char(string-expr)0‘‘‘‘‘‘‘)’)
(拆卸附件2(x)
;检查原子是否是字母
(秒(>x90)(+64(模x90)))
((
我的理解是cons函数将列表中的元素显示为字符串。例如(“A”“B”“C”)

作为一个字符串,理论上它应该是这样的
“abc”


我使用GNU CLISP 2.49(2010-07-07)进行编译。

将输出列表转换为字符串的最简单方法是使用以下格式:

(format t "~{~a ~}" '(a b c)) => A B C

你能举个例子(输入+输出)吗?
cons
没有显示任何内容。它不做任何输出
cons
只是构造一个cons单元格。除非您真的想要打印的副作用,否则最好使用
(格式为零…
@Vatine,甚至更好!
(format t "~{~a ~}" '(a b c)) => A B C