在Common Lisp中将数字与空格连接起来?

Ant*_*oli 2 lisp whitespace common-lisp

为Lisp程序编写一个简单的循环,我希望我的数字之间用空格打印,

(loop for i from 1 to 5
      do 
      (prin1  i))
Run Code Online (Sandbox Code Playgroud)

印刷品:

12345
Run Code Online (Sandbox Code Playgroud)

id喜欢它打印:

1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

但我找不到任何地方打印空白的任何信息。任何帮助表示赞赏!

tfb*_*tfb 5

所有足够成熟的编程语言都经过将另一种编程语言嵌入字符串中的阶段,通常是为了控制打印输出。 真正成熟的编程语言已经过了这一阶段:CL尚未成熟,仍然具有FORMAT控制字符串。您可以用这些做各种各样的事情。

您的示例的一个略微变体是FORMAT打印列表:

> (format t "~&~{~A~^, ~}.~%" '(1 2 3 4 5))
1, 2, 3, 4, 5.
Run Code Online (Sandbox Code Playgroud)

该控制字符串的含义是:

  1. ~& –在行的开头;
  2. ~{ –在列表上开始迭代;
  3. ~A–和一样打印每个元素PRINC
  4. ~^ –打印完最后一个元素后,在此处停止;
  5. , –为每个其他元素打印一个逗号和一个空格;
  6. ~} –元素循环结束;
  7. . –在列表的末尾打印停靠点;
  8. ~% –打印换行符。

这是使用FORMAT控制字符串的相对简单的示例:可以做一些相当繁琐的事情。


(实际上,当然,CL是CL,显然可以在该语言中无缝添加一些更具结构化的输出控制语言,而且我敢肯定,人们已经做到了。因此,CL在某种意义上已经走过了舞台:FORMAT控制字符串是只是对某些人来说是僵化的残骸)。