CLHS: Section 6.1.2.1.6

#

## 6.1.2.1.6 The for-as-hash subclause

In the for-as-hash subclause the `for` or `as` construct iterates over the elements, keys, and values of a hash-table. In this syntax, a compound preposition is used to designate access to a hash table. The variable var takes on the value of each hash key or hash value in the supplied hash-table. The following loop keywords serve as valid prepositions within this syntax:

`being`

  The keyword `being` introduces either the Loop schema `hash-key` or `hash-value`.

`each`, `the`

  The loop keyword `each` follows the loop keyword `being` when `hash-key` or `hash-value` is used. The loop keyword `the` is used with `hash-keys` and `hash-values` only for ease of reading. This agreement isn't required.

`hash-key`, `hash-keys`

  These loop keywords access each key entry of the hash table. If the name `hash-value` is supplied in a `using` construct with one of these Loop schemas, the iteration can optionally access the keyed value. The order in which the keys are accessed is undefined; empty slots in the hash table are ignored.

`hash-value`, `hash-values`

  These loop keywords access each value entry of a hash table. If the name `hash-key` is supplied in a `using` construct with one of these Loop schemas, the iteration can optionally access the key that corresponds to the value. The order in which the keys are accessed is undefined; empty slots in the hash table are ignored.

`using`

  The loop keyword `using` introduces the optional key or the keyed value to be accessed. It allows access to the hash key if iteration is over the hash values, and the hash value if iteration is over the hash keys.

`in`, `of`

  These loop prepositions introduce hash-table.

In effect

`being` {`each` | `the`} {`hash-value` | `hash-values` | `hash-key` | `hash-keys`} {`in` | `of`}

is a compound preposition.

Iteration stops when there are no more hash keys or hash values to be referenced in the supplied hash-table.

Copyright 1996-2005, LispWorks Ltd. All rights reserved.