如何在lisp中的同一行打印两个项目?

时间:2016-02-03 20:48:57

标签: printing format lisp common-lisp

我正在寻找类似的东西:

(printem 1 2)
1 2

我假设您通过格式调用来执行此操作,但示例并未专注于此。或者也许你写一个字符串并输出?但这似乎也不对。

3 个答案:

答案 0 :(得分:4)

好吧,在Common Lisp中你可以写:

(format t "~d ~d~%" 1 2)

请参阅Peter Seibel的 Practical Common Lisp 中的A Few FORMAT Recipes(其他章节也可能会让您感兴趣)。

答案 1 :(得分:2)

您想要的功能可以写成

(defun printem (&rest args)
    (dolist (el args) 
        (princ el) 
        (princ #\SPACE)))

>> (printem 1 2)
1 2 

答案 2 :(得分:2)

您可以简单地构建一个按iteration construct格式打印所有参数的函数。

(defun printem (&rest args)
  (format t "~{~a~^ ~}" args))

用法:

CL-USER> (printem 1 2 3)
1 2 3
CL-USER> (printem '(1 2 3) '(4 5 6))
(1 2 3) (4 5 6)