# define

- `(`define` (NAME NAME ...) EXPRESSION)`
  Procedures may be defined at the top level using this form. The first name inside the parentheses is the name of the procedure. All remaining names are the names of the procedure's arguments. The expression is the body of the procedure, evaluated whenever the procedure is applied. The name of the procedure may not be that of a primitive or another user definition.
- `(`define` NAME EXPRESSION)`
  This form binds a value to a name at the top level. It is an error for the name to be that of a primitive or another user definition. It is an error for the given name to occur in the defining expression.

Advanced Student Language