# API glossary

Source: https://libtmux.org/en/lisp/latest/reference/glossary/

> Kinds, modifiers and package labels in the Common Lisp API reference.

## Symbol kinds

Kinds identify declarations in the Common Lisp API reference.

### module

A Common Lisp package that names and exports symbols.

The package badge describes a namespace. ASDF systems are separate loadable units and may define one or more packages.

References: [Common Lisp packages](https://www.lispworks.com/documentation/HyperSpec/Body/11_.htm).

### class

A CLOS class whose instances participate in generic-function dispatch.

The public readers and generic functions are the supported interface; private slots are not an additional API.

References: [Common Lisp classes](https://www.lispworks.com/documentation/HyperSpec/Body/m_defcla.htm).

### function

A Common Lisp function binding called with its native lambda list.

A function can return multiple values. The displayed lambda list identifies required, optional and keyword arguments.

References: [Common Lisp functions](https://www.lispworks.com/documentation/HyperSpec/Body/m_defun.htm).

### exception

A Common Lisp condition type that handlers can inspect and, where documented, recover from through restarts.

Signalling a condition and transferring control are distinct operations; read the function contract for the condition and restart protocol.

References: [Common Lisp conditions](https://www.lispworks.com/documentation/HyperSpec/Body/09_.htm).

## Modifiers

Modifiers add information about calling, implementing, or accessing a declaration. Their precise effect follows the language and the signature.

### opaque

A public CLOS class whose representation is intentionally outside the supported API.

Construct, inspect and compare instances through exported functions rather than depending on private slot names.

References: [Common Lisp classes](https://www.lispworks.com/documentation/HyperSpec/Body/m_defcla.htm).

### macro

A Common Lisp macro that transforms source forms before their surrounding code runs.

The displayed lambda list describes source syntax, not ordinary evaluated function arguments.

References: [Common Lisp macros](https://www.lispworks.com/documentation/HyperSpec/Body/m_defmac.htm).

## Package context

Package labels identify where an API is supplied.

### package

The ASDF system supplying this API, distinct from the Common Lisp package that qualifies its symbols.

References: [ASDF systems](https://asdf.common-lisp.dev/asdf.html#Defining-systems-with-defsystem).
