[ Recorded Database | Reference Manual | Alphabetic Index ]

# record(+Key, ?Value)

Records the term Value after all other entries for key Key in the record database.

Key
  An atom, compound term, or handle.
Value
  An arbitrary term.

## Description

Used to record an arbitrary term Value at the end of the record database entries associated with the key Key. A synonym for recordz/2. In the case of compound terms, all keys of the same name and arity are treated as equal.

If backtracking occurs through the call of record/2 the associated Value is not removed from the record database. Recording the same Value twice results in two identical entries in the record database. All variables are recorded according to their internal representations.

### Modes and Determinism

- record(+, ?) is det

### Modules

This predicate is sensitive to its module context (tool predicate, see @/2).

### Exceptions

(4) instantiation fault
  Key is not instantiated.
(5) type error
  Key is neither an atom nor a compound term.

## Examples

       Success:
        record(a(compound,term),value1).
        record([a,different,term],value2).

        [eclipse]: record(whiskey,jameson),
        >        record(whiskey,glenlivet),
        >        record(whiskey,bushmills).
        yes.
        [eclipse]: recorded(whiskey,Value).
        Value = jameson     More (;)
        Value = glenlivet     More (;)
        Value = bushmills     More (;)
        no (more) solution.
    Error:
        record(Key, anything).             (Error 4)
        record("key",anything).            (Error 5)

## See Also

recorda / 2, recordz / 2, record_wait_append / 4