# Glossary of Terms

## A

application bundle

  A specially-structured directory that Mac OS X recognizes as a launchable Cocoa application. Graphical applications on Mac OS X are represented as application bundles.

## C

Cocoa

  The standard user-interface libraries and frameworks provided by Apple for development of applications on Mac OS X.

creator code

  A four-character identifier used in Mac OS X to uniquely identify an application.

## D

displaced array

  An array with no storage of its own for elements, which points to the storage of another array, called its target. Reading or writing the elements of the displaced array returns or changes the contents of the target.

## F

fasl file

  A file containing compiled lisp code that the Lisp is able to quickly load and use. A "fast-load" file.

## H

Hemlock

  A text editor, written in Common Lisp, similar in features to Emacs. Hemlock was originally developed as part of CMU Common Lisp. A portable version of Hemlock is built into the &CCL; IDE.

## I

IDE

  "Integrated Development Environment". In the context of &CCL;, "the IDE" refers to the experimental Cocoa windowing development environment provided in source form with &CCL; distributions.

image

  The in-memory state of a running Lisp system, containing functions, data structures, variables, and so on. Also, a file containing archived versions of these data in a format that can be loaded and reconstituted by the Lisp kernel. A working &CCL; system consists of the kernel and an image.

InterfaceBuilder

  An application supplied by Apple with their developer tools that can be used to interactively build user-interface elements for Cocoa applications.

## K

kernel

  The binary executable program that implements the lowest levels of the Lisp system. A working &CCL; system consists of the kernel and an image.

## L

listener window

  In the IDE, a Cocoa window that contains a pseudo-terminal session that communicates with a Lisp REPL.

## M

memory-mapped file

  A file whose contents are accessible as a range of memory addresses. Some operating systems support this feature, in which the virtual memory subsystem arranges for a range of virtual memory addresses to point to the contents of an open file. Programs can then gain access to the file's contents by operating on memory addresses in that range. Access to the file's contents is valid only as long as the file remains open.

## N

nibfile

  A data file created by Apple's InterfaceBuilder application, which contains archived Objective-C objects that define user-interface elements for a Cocoa application. Under Mac OS X, Cocoa applications typically create their user interface elements by reading nibfiles and unarchiving the objects in them.

## R

REPL

  "Read-eval-print loop". The interactive shell provided by &CCL; for interaction with Lisp.

## S

s-expression

  The simplest, most general element of Lisp syntax. An s-expression may be an atom (such as a symbol, integer, or string), or it may be a list of s-expressions.

special variable

  A variable whose binding is in the dynamic environment. Special variables are essentially equivalent to global variables in languages other than Lisp. A special variable binding is visible in any lexical environment, so long as a lexical binding has not shadowed it.

static variable

  In &CCL;, a variable whose value is shared across all threads, and which may not be dynamically rebound. Changing a static variable's value in one thread causes all threads to see the new value. Attempting to dynamically rebind the variable (for instance, by using `LET`, or using the variable name as a parameter in a `LAMBDA` form) signals an error.

## T

toplevel function

  The function executed by Lisp automatically once its startup is complete. &CCL;'s default toplevel is the interactive read-eval-print loop that you normally use to interact with Lisp. You can, however, replace the toplevel with a function of your own design, changing &CCL; from a Lisp development system into some tool of your making.

type-specifier

  An expression that denotes a type. Type specifiers may be symbols (such as `CONS` and `STRING`), or they may be more complex S-expressions (such as (UNSIGNED-BYTE 8)).