Книга: Practical Common Lisp
The FORMAT Function
The FORMAT Function
As you've seen in previous chapters, the
FORMAT function takes two required arguments: a destination for its output and a control string that contains literal text and embedded directives. Any additional arguments provide the values used by the directives in the control string that interpolate values into the output. I'll refer to these arguments as format arguments.
The first argument to
FORMAT, the destination for the output, can be
NIL, a stream, or a string with a fill pointer.
T is shorthand for the stream
FORMAT to generate its output to a string, which it then returns. If the destination is a stream, the output is written to the stream. And if the destination is a string with a fill pointer, the formatted output is added to the end of the string and the fill pointer is adjusted appropriately. Except when the destination is
NIL and it returns a string,
The second argument, the control string, is, in essence, a program in the
FORMAT language. The
FORMAT language isn't Lispy at all—its basic syntax is based on characters, not s-expressions, and it's optimized for compactness rather than easy comprehension. This is why a complex
FORMAT control string can end up looking like line noise.
FORMAT's directives simply interpolate an argument into the output in one form or another. Some directives, such as
~%, which causes
FORMAT to emit a newline, don't consume any arguments. And others, as you'll see, can consume more than one argument. One directive even allows you to jump around in the list of arguments in order to process the same argument more than once or to skip certain arguments in certain situations. But before I discuss specific directives, let's look at the general syntax of a directive.
- The Microcontroller Software
- The Resolver Library
- The Client Side of NIS
- Choosing the Right Maps
- 12. They Called It LISP for a Reason: List Processing
- 16. Object Reorientation: Generic Functions
- 4.4.4 The Dispatcher
- EXTERNAL FUNCTION DIRECTORY
- About the author
- Chapter 7. The state machine
- Appendix E. Other resources and links
- Example NAT machine in theory