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