12.5 Writing
(write datum [out]) → void? |
datum : any/c |
out : output-port? = (current-output-port) |
See The Printer for more information about the default printer. In particular, note that write may require memory proportional to the depth of the value being printed, due to the initial cycle check.
Examples: |
> (write 'hi) |
hi |
> (write (lambda (n) n)) |
#<procedure> |
> (define o (open-output-string)) |
> (write "hello" o) |
> (get-output-string o) |
"\"hello\"" |
(display datum [out]) → void? |
datum : any/c |
out : output-port? = (current-output-port) |
See The Printer for more information about the default printer. In particular, note that display may require memory proportional to the depth of the value being printed, due to the initial cycle check.
(print datum [out quote-depth]) → void? |
datum : any/c |
out : output-port? = (current-output-port) |
quote-depth : (or/c 0 1) = 0 |
The optional quote-depth argument adjusts printing when the print-as-expression parameter is set to #t. In that case, quote-depth specifies the starting quote depth for printing datum.
The rationale for providing print is that display and write both have specific output conventions, and those conventions restrict the ways that an environment can change the behavior of display and write procedures. No output conventions should be assumed for print, so that environments are free to modify the actual output generated by print in any way.
(displayln datum [out]) → void? |
datum : any/c |
out : output-port? = (current-output-port) |
(fprintf out form v ...) → void? |
out : output-port? |
form : string? |
v : any/c |
~n or ~% prints a newline, the same as \n
~a or ~A displays the next argument among the vs
~s or ~S writes the next argument among the vs
~v or ~V prints the next argument among the vs
~e or ~E outputs the next argument among the vs using the current error value conversion handler (see error-value->string-handler) and current error printing width
~c or ~C write-chars the next argument in vs; if the next argument is not a character, the exn:fail:contract exception is raised
~b or ~B prints the next argument among the vs in binary; if the next argument is not an exact number, the exn:fail:contract exception is raised
~o or ~O prints the next argument among the vs in octal; if the next argument is not an exact number, the exn:fail:contract exception is raised
~x or ~X prints the next argument among the vs in hexadecimal; if the next argument is not an exact number, the exn:fail:contract exception is raised
~~ prints a tilde.
~‹w›, where ‹w› is a whitespace character (see char-whitespace?), skips characters in form until a non-whitespace character is encountered or until a second end-of-line is encountered (whichever happens first). On all platforms, an end-of-line can be #\return, #\newline, or #\return followed immediately by #\newline.
The form string must not contain any ~ that is not one of the above escapes, otherwise the exn:fail:contract exception is raised. When the format string requires more vs than are supplied, the exn:fail:contract exception is raised. Similarly, when more vs are supplied than are used by the format string, the exn:fail:contract exception is raised.
Example: | ||||
| ||||
(3 4) as a string is "(3 4)". |
(let ([o (open-output-string)]) |
(fprintf o form v ...) |
(get-output-string o)) |
Example: |
> (format "~a as a string is ~s.~n" '(3 4) "(3 4)") |
"(3 4) as a string is \"(3 4)\".\n" |
(print-pair-curly-braces) → boolean? |
(print-pair-curly-braces on?) → void? |
on? : any/c |
(print-mpair-curly-braces) → boolean? |
(print-mpair-curly-braces on?) → void? |
on? : any/c |
(print-unreadable) → boolean? |
(print-unreadable on?) → void? |
on? : any/c |
(print-graph) → boolean? |
(print-graph on?) → void? |
on? : any/c |
(print-struct) → boolean? |
(print-struct on?) → void? |
on? : any/c |
(print-vector-length) → boolean? |
(print-vector-length on?) → void? |
on? : any/c |
(print-hash-table) → boolean? |
(print-hash-table on?) → void? |
on? : any/c |
(print-reader-abbreviations) → boolean? |
(print-reader-abbreviations on?) → void? |
on? : any/c |
(print-as-expression) → boolean? |
(print-as-expression on?) → void? |
on? : any/c |
(print-honu) → boolean? |
(print-honu on?) → void? |
on? : any/c |
(print-syntax-width) |
→ (or/c +inf.0 0 (and/c exact-integer? (>/c 3))) |
(print-syntax-width width) → void? |
width : (or/c +inf.0 0 (and/c exact-integer? (>/c 3))) |
(current-write-relative-directory) |
→ (or/c (and/c path? complete-path?) #f) |
(current-write-relative-directory path) → void? |
path : (or/c (and/c path-string? complete-path?) #f) |
(port-write-handler out) → (any/c output-port? . -> . any) |
out : output-port? |
(port-write-handler out proc) → void? |
out : output-port? |
proc : (any/c output-port? . -> . any) |
(port-display-handler out) → (any/c output-port? . -> . any) |
out : output-port? |
(port-display-handler out proc) → void? |
out : output-port? |
proc : (any/c output-port? . -> . any) |
(port-print-handler out) |
→ ((any/c output-port?) ((or/c 0 1)) . ->* . any) |
out : output-port? |
(port-print-handler out proc) → void? |
out : output-port? |
proc : (any/c output-port? . -> . any) |
A port print handler optionally accepts a third argument, which corresponds to the optional third argument to print; if a procedure given to port-print-handler does not accept a third argument, it is wrapped with a procedure that discards the optional third argument.
The default port display and write handlers print Racket expressions with Racket’s built-in printer (see The Printer). The default print handler calls the global port print handler (the value of the global-port-print-handler parameter); the default global port print handler is the same as the default write handler.
(global-port-print-handler) |
→ ((any/c output-port?) ((or/c 0 1)) . ->* . any) |
(global-port-print-handler proc) → void? |
proc : (any/c output-port? . -> . any) |
A global port print handler optionally accepts a third argument, which corresponds to the optional third argument to print. If a procedure given to global-port-print-handler does not accept a third argument, it is wrapped with a procedure that discards the optional third argument.