Signaling errors

For now, only one function is provided to signal errors: STk_err. This function takes two parameters: a C string which constitutes the body of the message and a Scheme object (a SCM pointer) designating the erroneous object. If the second argument is NIL, it will not be printed. Execution of the function STk_err never returns. It provokes a jump at the start of the top-level loop. Hereafter, is a new implementation of the when function which uses STk_err when given an erroneous arguments list.
\begin{Code}
\begin{alltt}
static PRIMITIVE when(SCM l, SCM env, int argcount)
\...
...CDR(l))
res = STk_eval(CAR(l), env);
\}
return res;
\}
\end{alltt}\end{Code}