Liking cljdoc? Tell your friends :D

Common Lisp FORMAT Reference - CLHS Summary (HexstreamSoft)

Overview

This page summarizes CLHS 22.3 "Formatted Output" with sections on directive definitions and additional FORMAT operation information. Users can employ V (dynamic argument) or # (remaining parameters count) as prefix parameters.

Directive Reference Table

22.3.1 Basic Output

DirectiveNamePrefix Args: modifier@ modifierConsumption
~CCharacter--Spells out non-printing chars#\ reader syntax1 arg
~%Newlinen (repeat count)----0 args
~&Fresh-Linen (repeat count)----0 args
~\|Pagen (repeat count)----0 args
~~Tilden (repeat count)----0 args

22.3.2 Radix Control

DirectiveNamePrefix Args: modifier@ modifierConsumption
~RRadixradix, mincol, padchar, commachar, comma-intervalWith radix: commas; Without: ordinal / old RomanWith radix: sign; Without: cardinal as words / Roman1 arg
~DDecimalmincol, padchar, commachar, comma-intervalCommas between groupsForce sign1 arg
~BBinarymincol, padchar, commachar, comma-intervalCommas between groupsForce sign1 arg
~OOctalmincol, padchar, commachar, comma-intervalCommas between groupsForce sign1 arg
~XHexadecimalmincol, padchar, commachar, comma-intervalCommas between groupsForce sign1 arg

22.3.3 Floating-Point Printers

DirectiveNamePrefix Args: modifier@ modifier
~FFixed-Formatw, d, k, overflowchar, padchar--Force sign
~EExponentialw, d, e, k, overflowchar, padchar, exponentchar--Force sign
~GGeneralw, d, e, k, overflowchar, padchar, exponentchar--Force sign
~$Monetaryd, n, w, padcharSign before paddingForce sign

22.3.4 Printer Operations

DirectiveNamePrefix Args: modifier@ modifier
~AAesthetic (princ)mincol, colinc, minpad, padcharnil prints as "()"Pad on left
~SStandard (prin1)mincol, colinc, minpad, padcharnil prints as "()"Pad on left
~WWrite--*print-pretty* = t*print-level* = nil, *print-length* = nil

22.3.5 Pretty Printer Operations

DirectiveNameNotes
~_Conditional Newline: = fill, @ = miser, :@ = mandatory, plain = linear
~<...~:>Logical BlockUp to 3 segments (prefix, body, suffix) via ~;
~IIndentn (default 0); : = current mode, plain = block mode
~/name/Call FunctionCalls named function with (stream arg colon-p at-sign-p &rest params)

22.3.6 Layout Control

DirectiveNamePrefix ArgsNotes
~TTabulatecolnum, colinc@ = relative; : = section-relative (pretty printer)
~<...~>Justificationmincol, colinc, minpad, padchar: = space before first; @ = space after last
~>End Justification--Terminates ~<

22.3.7 Control Flow

DirectiveNameNotes
~*Go-ToSkip n args; ~:* = back up n; ~n@* = absolute position
~[...~]ConditionalOrdinal selection by index; ~:[false~;true~]; ~@[if-true~]
~]End ConditionalTerminates ~[
~{...~}Iteration: = sublists; @ = remaining args; :@ = remaining args as sublists
~}End IterationTerminates ~{; ~:} forces at least one iteration
~?Recursive ProcessingConsumes control string + arg list; ~@? uses remaining args

22.3.8 Miscellaneous Operations

DirectiveNameNotes
~(...~)Case Conversionplain = downcase; : = capitalize words; @ = capitalize first; :@ = upcase
~)End Case ConversionTerminates ~(
~PPlural"s"/nothing; @ = "y"/"ies"; : = back up one arg first

22.3.9 Pseudo-Operations

DirectiveNameNotes
~;Clause SeparatorUsed in ~[ and ~< constructs only
~^Escape Upward0 params = test remaining args; 1 = zero test; 2 = equal test; 3 = range test
~<newline>Ignored Newlineplain = ignore newline+whitespace; : = ignore newline only; @ = keep newline, ignore whitespace

Additional Information (22.3.10)

Nesting Requirements

Directive invocations must maintain proper nesting structure.

Missing and Additional Arguments

"Consequences are undefined if no arg remains for a directive requiring an argument. However, it is permissible for one or more args to remain unprocessed by a directive; such args are ignored."

Parameter Limits

"Consequences are undefined if a format directive is given more parameters than described as accepting."

Modifier Combinations

"Consequences are undefined if colon or at-sign modifiers are given to a directive in a combination not specifically described as meaningful."

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close