Well, if I Called the Wrong Number, Why Did You Answer the Phone?
The interpreter has encountered an unquoted word X - which it therefore takes for a procedure name - but no such procedure has been defined. (You might, of course, have supposed mistakenly that you had defined X or loaded the definition into your workspace. But the message will also appear if you forget to type " in front of a literal word or : in front of a variable name.)
You have used X as if it were a variable name, but no such variable exists. (Did you mis-spell the name? Or did you forget to set it up?)
The procedure X - which may be a primitive or user-defined - expects more inputs than have been provided.
The object X was output but was not passed as input to another procedure. (Remember that an instruction must begin with a command.)
The procedure called X has been offered an inappropriate type of input, Y. The correct input type is Z. (Maybe, for example, you have tried to give X a word when it requires a list.)
The procedure Y expected an input from X but didn't get one. (This can happen if X is a command - which has an effect as opposed to providing an output.)
The limit on the memory available to keep procedures on hold has been passed. (Recursive procedures - unless they use tail recursion - can lead to this condition if the terminating condition is not met before space runs out.)
Make sure that every opening [ has following it a matching, closing ] .