[ library(hash) | Reference Manual | Alphabetic Index ]

# hash_map(+Table, ++Key, ?Value)

Lookup or set Value as the value associated with Key

Table
  A hash table
Key
  a ground term
Value
  Any term

## Description

Unify Value with the table entry for Key, creating a fresh table entry if it does not exist yet. Behaves like

            hash_map(Map, Key, Value) :-
                ( hash_get(Map, Key, V) -> Value=V
                ; hash_set(Map, Key, Value)
                ).

With this predicate, the table behaves as if it were initialised with free variables for every possible key. This is most useful when the table is used to associate logical variables with ground keys.

### Modes and Determinism

- hash_map(+, ++, -) is det
- hash_map(+, ++, +) is semidet

## Examples

    	?- hash_create(H),
               hash_map(H, one, X),
               hash_map(H, one, Y).

               X = X
               Y = X
               Yes (0.00s cpu)

## See Also

hash_get / 3, hash_set / 3, hash_update / 5