为什么SBCL会像这样打印Sublis?

时间:2015-12-02 17:44:44

标签: lisp common-lisp sbcl

所以功能:

(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?

1 个答案:

答案 0 :(得分:9)

漂亮的打印机正在处理make_password()列表,假设它(可能)是一个实际的Lisp格式。

(if …)

您会发现,除其他事项外,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
顺便说一句,相关的标准被发现...... http://www.lispworks.com/documentation/lw60/CLHS/Body/22_b.htm ...如果你想要为你的目的重新编程它。

对于仅打印数据列表,我怀疑禁用漂亮打印或使用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) 可能就足够了。

例如

FORMAT