Scheme编程中的输出、解释器与抽象对象
1. 输出相关操作
在Scheme编程里,输出操作是常见需求。通常,打印字符串包含Scheme对象(尤其是数字)的表示时,使用标准输出例程可能会很繁琐。比如,原本打印一个简单的单行消息需要多次调用输出例程:
(write (tree-count node) p)
(write-char #\space p)
(display (tree-word node) p)
(newline p)
而格式化输出设施解决了这个问题。 fprintf 函数期望一个端口参数、一个控制字符串,以及不定数量的额外参数,这些参数会按照控制字符串的指定插入到输出中。例如:
(fprintf p "~s ~a~%" (tree-count node) (tree-word node))
printf 函数与 fprintf 类似,只是它不需要端口参数,输出会发送到当前输出端口。以下是 fprintf 和 printf 的简单实现:
(let ()
;; dofmt 完成所有工作。它遍历控制字符串,识别格式指令并打印其他字符
(define dofmt
(lambda (p cntl args)
(let ((n
超级会员免费看
订阅专栏 解锁全文
540

被折叠的 条评论
为什么被折叠?



