pprint-logic-block动态绑定标准输出

时间:2018-09-02 19:34:09

标签: common-lisp

http://clhs.lisp.se/Body/22_bb.htm中的示例代码

(defun simple-pprint-defun (*standard-output* list)
  (pprint-logical-block (*standard-output* list :prefix "(" :suffix ")")
    (write (first list))
    (write-char #\Space)
    ...

这巧妙地动态绑定了*standard-output*,因此对例如write-char可以写成好像一切都将进入标准输出,并且任何必需的重定向都将自动发生。

稍后在同一页面上:

(defun pprint-let (*standard-output* list)
  (pprint-logical-block (nil list :prefix "(" :suffix ")")

在这种情况下,stream-symbol的{​​{1}}参数只是pprint-logical-block。那是怎么回事?您可以执行nil的功能吗,并且仍然可以使用?我在http://clhs.lisp.se/Body/m_ppr_lo.htm#pprint-logical-block

上没有提到任何允许的速记方式

0 个答案:

没有答案