2.5 Output Printing Styles

► |  | Dr Racket: The Racket Programming Environment

1 | Interface Essentials
2 | Languages
3 | Interface Reference
4 | Extending Dr Racket
| Index

▼ | 2 | Languages

2.1 | Language Declared in Source
2.2 | Legacy Languages
2.3 | How to Design Programs Teaching Languages
2.4 | Other Experimental Languages
2.5 | Output Printing Styles

top contents ← prev up next →

### 2.5 Output Printing Styles🔗ℹ

Many Racket languages support a Output Syntax choice that determines how evaluation results are printed in the interactions window. This setting also applies to output generated by calling print explicitly.

The print style is the normal Racket output style. The following table illustrates the other output styles:

| Input expression |  | Constructor |  | Quasiquote |  | write
| (cons 1 2) |  | (cons 1 2) |  | `(1 . 2) |  | (1 . 2)
| (list 1 2) |  | (list 1 2) |  | `(1 2) |  | (1 2)
| '(1 2) |  | (list 1 2) |  | `(1 2) |  | (1 2)
| (list (void)) |  | (list (void)) |  | `(,(void)) |  | (#<void>)
| `(,(void)) |  | (list (void)) |  | `(,(void)) |  | (#<void>)
| (vector 1 2 3) |  | (vector 1 2 3) |  | (vector 1 2 3) |  | #(1 2 3)
| (box 1) |  | (box 1) |  | (box 1) |  | #&1
| (lambda (x) x) |  | (lambda (a1) ...) |  | (lambda (a1) ...) |  | #<procedure>
| 'sym |  | 'sym |  | 'sym |  | sym
| (make-s 1 2) |  | (make-s 1 2) |  | (make-s 1 2) |  | #(struct:s 1 2)
| '() |  | empty |  | `() |  | ()
| add1 |  | add1 |  | add1 |  | #<procedure:add1>
| (delay 1) |  | (delay ...) |  | (delay ...) |  | #<promise>
| (regexp "a") |  | (regexp "a") |  | (regexp "a") |  | #rx"a"

The Constructor output mode is similar to Rackets normal print mode, except that even quotable are still printed with constructors, constructor functions and forms are used to approximate some otherwise unprintable values. For example, Constructor output prints a procedure in a lambda form. For output to a graphical context, rational numbers are printed using a special snip% object that lets the user choose between improper fractions, mixed fractions, and repeating decimals.

The Quasiquote output mode is like Constructor output, but it uses quasiquote (abbreviated with `) to print lists, and it uses unquote (abbreviated with ,) to escape back to Constructor printing as needed.

The write output mode corresponds to traditional Scheme printing via the write procedure. For example, lists print by parenthesizing the printed form of the list elements, without a leading quote mark or a constructor name.

The print output mode corresponds to Racket’s default printing via the print procedure. Output via print is further configurable through run-time settings, such as the print-as-expression parameter, and it may be adjusted by a #lang-specified language. For example, the scheme language sets the print-as-expression parameter to #f, which essentially makes print mode act like write mode.

The Constant Style option, when present, controls how true, false, and empty print; for the booleans, it determines if there is a # prefix and for the empty list, determines if it prints as empty or '().

For any of the output styles, DrRacket sets the global-port-print-handler (as described in Initial Environment) so that the print procedure produces output as selected.

top contents ← prev up next →