为什么SBCL会这样打印Sublis?
Why does SBCL print Sublis like this?
所以函数:
(defun royal-we ()
(sublis '((i . we))
'(if I learn lisp I will be pleased)))
SBCL 中的输出是这样打印的:
(IF WE
LEARN
LISP
WE
WILL
BE
PLEASED)
然而例子一:
(sublis '((roses . violets) (red . blue))
'(roses are red))
给出输出
(VIOLETS ARE BLUE)
为什么 SBCL 在不同的行上打印列表的原子,这与 Clisp 等其他发行版不同?
漂亮打印机正在处理 (if …)
列表,假设它(可能)是一个实际的 Lisp 形式。
CL-USER> (setf *print-pretty* nil)
NIL
CL-USER> '(if 1 2 3)
(IF 1 2 3)
CL-USER> (setf *print-pretty* t)
T
CL-USER> '(if 1 2 3)
(IF 1
2
3)
您会发现,除其他外,let
表格也将以类似方式缩进,并且某些 loop
符号将开始新行。还有一些其他的影响。
CL-USER> '(loop for thing in stuff with boo = 4 count mice)
(LOOP FOR THING IN STUFF
WITH BOO = 4
COUNT MICE)
CL-USER> '(let 1 2 3)
(LET 1
2
3)
CL-USER> '(defun 1 nil 2 3)
(DEFUN 1 () 2 3)
CL-USER> (setf *print-pretty* nil)
NIL
CL-USER> '(defun 1 nil 2 3)
(DEFUN 1 NIL 2 3)
顺便说一句,找到了相关标准……http://www.lispworks.com/documentation/lw60/CLHS/Body/22_b.htm……如果您想要重新编程以达到您的目的。
对于仅打印数据列表,我怀疑禁用漂亮打印或使用 FORMAT
可能就足够了。
例如,
(format t "~&~@(~{~a~^ ~}~)" '(violets are blue))
Violets are blue
所以函数:
(defun royal-we ()
(sublis '((i . we))
'(if I learn lisp I will be pleased)))
SBCL 中的输出是这样打印的:
(IF WE
LEARN
LISP
WE
WILL
BE
PLEASED)
然而例子一:
(sublis '((roses . violets) (red . blue))
'(roses are red))
给出输出
(VIOLETS ARE BLUE)
为什么 SBCL 在不同的行上打印列表的原子,这与 Clisp 等其他发行版不同?
漂亮打印机正在处理 (if …)
列表,假设它(可能)是一个实际的 Lisp 形式。
CL-USER> (setf *print-pretty* nil)
NIL
CL-USER> '(if 1 2 3)
(IF 1 2 3)
CL-USER> (setf *print-pretty* t)
T
CL-USER> '(if 1 2 3)
(IF 1
2
3)
您会发现,除其他外,let
表格也将以类似方式缩进,并且某些 loop
符号将开始新行。还有一些其他的影响。
CL-USER> '(loop for thing in stuff with boo = 4 count mice)
(LOOP FOR THING IN STUFF
WITH BOO = 4
COUNT MICE)
CL-USER> '(let 1 2 3)
(LET 1
2
3)
CL-USER> '(defun 1 nil 2 3)
(DEFUN 1 () 2 3)
CL-USER> (setf *print-pretty* nil)
NIL
CL-USER> '(defun 1 nil 2 3)
(DEFUN 1 NIL 2 3)
顺便说一句,找到了相关标准……http://www.lispworks.com/documentation/lw60/CLHS/Body/22_b.htm……如果您想要重新编程以达到您的目的。
对于仅打印数据列表,我怀疑禁用漂亮打印或使用 FORMAT
可能就足够了。
例如,
(format t "~&~@(~{~a~^ ~}~)" '(violets are blue))
Violets are blue