1D Tables - MIT/GNU Scheme 9.1
Description: MIT/GNU Scheme 9.1

Next: The Association Table, Previous: Association Lists, Up: Associations

### 11.2 1D Tables

1D tables (“one-dimensional” tables) are similar to association lists. In a 1D table, unlike an association list, the keys of the table are held weakly: if a key is garbage-collected, its associated value in the table is removed. 1D tables compare their keys for equality using `eq?`.

1D tables can often be used as a higher-performance alternative to the two-dimensional association table (see The Association Table). If one of the keys being associated is a compound object such as a vector, a 1D table can be stored in one of the vector's slots. Under these circumstances, accessing items in a 1D table will be comparable in performance to using a property list in a conventional Lisp.

— procedure: make-1d-table

> Returns a newly allocated empty 1D table.

— procedure: 1d-table? object

> Returns `#t` if object is a 1D table, otherwise returns `#f`. Any object that satisfies this predicate also satisfies `list?`.

— procedure: 1d-table/put! 1d-table key datum

> Creates an association between key and datum in 1d-table. Returns an unspecified value.

— procedure: 1d-table/remove! 1d-table key

> Removes any association for key in 1d-table and returns an unspecified value.

— procedure: 1d-table/get 1d-table key default

> Returns the datum associated with key in 1d-table. If there is no association for key, default is returned.

— procedure: 1d-table/lookup 1d-table key if-found if-not-found

> If-found must be a procedure of one argument, and if-not-found must be a procedure of no arguments. If 1d-table contains an association for key, if-found is invoked on the datum of the association. Otherwise, if-not-found is invoked with no arguments. In either case, the result of the invoked procedure is returned as the result of `1d-table/lookup`.

— procedure: 1d-table/alist 1d-table

> Returns a newly allocated association list that contains the same information as 1d-table.