Before a procedure is invoked, it must either be defined or prototyped. A prototype is a header that defines a procedure's parameter and return types. Procedure prototypes are needed for defining mutually recursive procedures or for invoking external procedures written in C (see Section 8.2).