# 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 parameters. 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.
- `(define NAME (lambda (NAME NAME ...) EXPRESSION))`
  Procedures may be defined at the top level using this alternate form. The names in parentheses are the names of the procedure's parameters, and the expression forms the body of the procedure, evaluated whenever the procedure is applied. The name may not be that of a primitive or another user definition.

Intermediate Student Table of Contents