Почему `Let` добавляет новую строку? (А можно от этого избавиться?) - PullRequest
0 голосов
/ 23 апреля 2020

В своей оболочке я пробовал кое-что, заметил и добавил символ новой строки в начале моего оператора let.

[86]> (setf A 5)
5
[87]> (let () (print 'hello) (print 'there) A )
       ;; this blank line right here
HELLO
THERE
5

Есть ли способ удалить лишнюю строку?

1 Ответ

6 голосов
/ 23 апреля 2020

Это не let, это добавляет новую строку --- это print.

Согласно CLHS : "print похожа на prin1, за исключением того, что печатное представление объекта предшествует новая строка и пробел. "

Вы можете использовать prin1 вместо:

CL-USER> (let () (prin1 'hello) (print 'there) 5)
HELLO
THERE 
5

или вы можете используйте format

CL-USER> (let () (format t "~a~%~a~%" 'hello 'there) 5)
HELLO
THERE
5
...