Common Lisp第9.10章:符号计算声明的温和介绍:
原始的i/o函数TERPRI,PRIN1,PRINC和PRINT是在Lisp 1.5(所有现代Lisp系统的祖先)中定义的,现在仍然可以在Common Lisp中找到.它们作为历史记录包含在"高级主题"部分中; 你可以用FORMAT获得同样的效果.
这意味着你没有neet princ&co.在现代代码中,你只需要依赖它format.
这样做有什么不利之处吗?分别是否有任何format与其他东西无法实现的东西?
你也可以使用更现代的write.我不是一个狂热的粉丝,format因为它简洁的子语言,通常被解释.请注意,良好的实现可能能够将格式指令编译为更高效的代码.我使用FORMAT主要是因为它使复杂的代码更短,但不能输出普通的对象或像单回车那样的东西......
Common Lisp包含三代或更多代文本I/O API:
此外,还有基于CLOS的半标准IO实现,如Gray Streams.
每个人都有自己的目的,很快就会消失......
CL-USER 54 > (let ((label "Social security number")
(colon ": ")
(social-security-number '|7537 DD 459234957324 DE|))
(terpri)
(princ label)
(princ colon)
(princ social-security-number)
(write-char #\newline)
(write-string label)
(write-string colon)
(write social-security-number :escape nil)
(format t "~%~A~A~A" label colon social-security-number)
)
Social security number: 7537 DD 459234957324 DE
Social security number: 7537 DD 459234957324 DE
Social security number: 7537 DD 459234957324 DE
Run Code Online (Sandbox Code Playgroud)
这些函数与以下FORMAT运算符完全对应:
TERPRI = ~%FRESH-LINT = ~&PRIN1 = ~SPRINC = ~APRINT = ~%~S<space> | 归档时间: |
|
| 查看次数: |
3565 次 |
| 最近记录: |