### 7.15 Input/output from/to constant terms

- `read_term_from_atom/3`, `read_from_atom/2`, `read_token_from_atom/2`
- `read_term_from_chars/3`, `read_from_chars/2`, `read_token_from_chars/2`
- `read_term_from_codes/3`, `read_from_codes/2`, `read_token_from_codes/2`
- `write_term_to_atom/3`, `write_to_atom/2`, `writeq_to_atom/2`,
  `write_canonical_to_atom/2`, `display_to_atom/2`, `print_to_atom/2`,
  `format_to_atom/3`
- `write_term_to_chars/3`, `write_to_chars/2`, `writeq_to_chars/2`,
  `write_canonical_to_chars/2`, `display_to_chars/2`, `print_to_chars/2`,
  `format_to_chars/3`
- `write_term_to_codes/3`, `write_to_codes/2`, `writeq_to_codes/2`,
  `write_canonical_to_codes/2`, `display_to_codes/2`, `print_to_codes/2`,
  `format_to_codes/3`

These built-in predicates enable a Prolog term to be input from or output to a Prolog constant term (atom, character list or character code list). All these predicates can be defined using constant term streams (section 7.11). They are however simpler to use.

#### 7.15.1 `read_term_from_atom/3`, `read_from_atom/2`, `read_token_from_atom/2`

Templates

  `read_term_from_atom(+atom ?term, +read_option_list)
  read_from_atom(+atom, ?term)
  read_token_from_atom(+atom, ?nonvar)`

Description

Like `read_term/3`, `read/2` (section 7.14.1) and `read_token/2` (section 7.14.3) except that characters are not read from a text-stream but from `Atom`; the atom given as first argument.

Errors

`Atom` is a variable |  | `instantiation_error`
`Atom` is neither a variable nor an atom |  | `type_error(atom, Atom)`
see associated predicate errors |  | (section 7.14.1) and (section 7.14.3)

Portability

GNU Prolog predicates.

#### 7.15.2 `read_term_from_chars/3`, `read_from_chars/2`, `read_token_from_chars/2`

Templates

  `read_term_from_chars(+character_list ?term, +read_option_list)
  read_from_chars(+character_list, ?term)
  read_token_from_chars(+character_list, ?nonvar)`

Description

Like `read_term/3`, `read/2` (section 7.14.1) and `read_token/2` (section 7.14.3) except that characters are not read from a text-stream but from `Chars`; the character list given as first argument.

Errors

`Chars` is a partial list or a list with an element `E` which is a variable |  | `instantiation_error`
`Chars` is neither a partial list nor a list |  | `type_error(list, Chars)`
an element `E` of the `Chars` list is neither a variable nor a character |  | `type_error(character, E)`
see associated predicate errors |  | (section 7.14.1) and (section 7.14.3)

Portability

GNU Prolog predicates.

#### 7.15.3 `read_term_from_codes/3`, `read_from_codes/2`, `read_token_from_codes/2`

Templates

  `read_term_from_codes(+character_code_list ?term, +read_option_list)
  read_from_codes(+character_code_list, ?term)
  read_token_from_codes(+character_code_list, ?nonvar)`

Description

Like `read_term/3`, `read/2` (section 7.14.1) and `read_token/2` (section 7.14.3) except that characters are not read from a text-stream but from `Codes`; the character code list given as first argument.

Errors

`Codes` is a partial list or a list with an element `E` which is a variable |  | `instantiation_error`
`Codes` is neither a partial list nor a list |  | `type_error(list, Codes)`
an element `E` of the `Codes` list is neither a variable nor an integer |  | `type_error(integer, E)`
an element `E` of the `Codes` list is an integer but not a character code |  | `representation_error(character_code, E)`
see associated predicate errors |  | (section 7.14.1) and (section 7.14.3)

Portability

GNU Prolog predicates.

#### 7.15.4 `write_term_to_atom/3`, `write_to_atom/2`, `writeq_to_atom/2`,
`write_canonical_to_atom/2`, `display_to_atom/2`, `print_to_atom/2`,
`format_to_atom/3`

Templates

  `write_term_to_atom(?atom, ?term, +write_option_list)
  write_to_atom(?atom, ?term)
  writeq_to_atom(?atom, ?term)
  write_canonical_to_atom(?atom, ?term)
  display_to_atom(?atom, ?term)
  print_to_atom(?atom, ?term)
  format_to_atom(?atom, +character_code_list_or_atom, +list)`

Description

Similar to `write_term/3`, `write/2`, `writeq/2`, `write_canonical/2`, `display/2`, `print/2` (section 7.14.6) and `format/3` (section 7.14.7) except that characters are not written onto a text-stream but are collected as an atom which is then unified with the first argument `Atom`.

Errors

`Atom` is neither a variable nor an atom |  | `type_error(atom, Atom)`
see associated predicate errors |  | (section 7.14.6) and (section 7.14.7)

Portability

GNU Prolog predicates.

#### 7.15.5 `write_term_to_chars/3`, `write_to_chars/2`, `writeq_to_chars/2`,
`write_canonical_to_chars/2`, `display_to_chars/2`, `print_to_chars/2`,
`format_to_chars/3`

Templates

  `write_term_to_chars(?character_list, ?term, +write_option_list)
  write_to_chars(?character_list, ?term)
  writeq_to_chars(?character_list, ?term)
  write_canonical_to_chars(?character_list, ?term)
  display_to_chars(?character_list, ?term)
  print_to_chars(?character_list, ?term)
  format_to_chars(?character_list, +character_code_list_or_atom, +list)`

Description

Similar to `write_term/3`, `write/2`, `writeq/2`, `write_canonical/2`, `display/2`, `print/2` (section 7.14.6) and `format/3` (section 7.14.7) except that characters are not written onto a text-stream but are collected as a character list which is then unified with the first argument `Chars`.

Errors

`Chars` is neither a partial list nor a list |  | `type_error(list, Chars)`
see associated predicate errors |  | (section 7.14.6) and (section 7.14.7)

Portability

GNU Prolog predicates.

#### 7.15.6 `write_term_to_codes/3`, `write_to_codes/2`, `writeq_to_codes/2`,
`write_canonical_to_codes/2`, `display_to_codes/2`, `print_to_codes/2`,
`format_to_codes/3`

Templates

  `write_term_to_codes(?character_code_list, ?term, +write_option_list)
  write_to_codes(?character_code_list, ?term)
  writeq_to_codes(?character_code_list, ?term)
  write_canonical_to_codes(?character_code_list, ?term)
  display_to_codes(?character_code_list, ?term)
  print_to_codes(?character_code_list, ?term)
  format_to_codes(?character_code_list, +character_code_list_or_atom, +list)`

Description

Similar to `write_term/3`, `write/2`, `writeq/2`, `write_canonical/2`, `display/2`, `print/2` (section 7.14.6) and `format/3` (section 7.14.7) except that characters are not written onto a text-stream but are collected as a character code list which is then unified with the first argument `Codes`.

Errors

`Codes` is neither a partial list nor a list |  | `type_error(list, Codes)`
see associated predicate errors |  | (section 7.14.6) and (section 7.14.7)

Portability

GNU Prolog predicates.

Copyright (C) 1999-2007 Daniel Diaz Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. More about the copyright