## Printer

In all situations where the rules are well specified, &ECL; prints objects according to &ANSI;. The specification leaves however a number of cases as implementation dependent behavior. The output of &ECL; in those cases is summarized in table.printer. Except for the types `character` and `random-state`, most of those examples regard non-standard written forms `#<...>` cannot be read back using `read`. These printed representations are just informative and should not be used to reconstruct or compare objects.

## Implementation specific printed representation

Lisp type | Format | Remarks
`package` | `#<package `name`>` |
`random-state` | `#$`character array`` |
`bitvector` | `#<bit-vector `unique-id`>` | Only when `*print-array*` is false.
`vector` | `#<vector `unique-id`>` | Only when `*print-array*` is false.
`array` | `#<array `unique-id`>` | Only when `*print-array*` is false.
`hash-table` | `#<hash-table `unique-id`>` |
`readtable` | `#<readtable `unique-id`>` |
interpreted `function` | `#<bytecompiled-function `name-or-id`>` | Name is a `symbol`.
machine compiled `function` | `#<compiled-function `name`>` | Name is a `symbol`.
`input-stream` | `#<input stream "`filename`">` | An stream that reads from `filename`.
`output-stream` | `#<output stream "`filename`">` | An stream that writes to `filename`.
`probe-stream` | `#<probe stream "`filename`">` |
`string-input-stream` | `#<string-input stream from "`string-piece`">` | The string is the text left to be read.
`string-output-stream` | `#<string-output stream `unique-id`>` |
`two-way-stream` | `#<two-way stream `unique-id`>` |
`echo-stream` | `#<echo stream `unique-id`>` |
`synonym-stream` | `#<synonym stream to `symbol`>` |
`broadcast-stream` | `#<broadcast stream `unique-id`>` |
`concatenated-stream` | `#<concatenated stream `unique-id`>` |
`closed-stream` | `#<closed `...`>` | The dots denote any of the above stream forms.