[r6rs-discuss] Compile-time detection of contract violations

From: Abdulaziz Ghuloum <aghuloum>
Date: Wed Nov 1 03:29:52 2006

On Nov 1, 2006, at 1:36 AM, Michael Sperber wrote:
> [...]
> In safe mode, it returns 1 by virtue of the following wording (Section
> 5.1):
>
> Also, if the number of arguments provided in a procedure call does
> not match any argument count specified for the called procedure, an
> exception with condition type {\cf\&contract} must be raised.

> [...]
> In unsafe mode, all bets are off by virtue of the following wording
> (as an example) (Section 4.3):
>
> In \textit{unsafe} code, implementations might not raise the
> exceptions that are normally raised in those situations.

Let me state my understanding and please correct me if I'm wrong.

Calling a procedure with an incorrect number of arguments raises a
&contract condition. Implementations, under safe mode, must trap
such condition and invoke the installed exception handler. Under
unsafe mode, implementations can ignore this condition since
&contract is a subtype of &defect which is a subctype of
&violation, and as per Section 9.22, "an implementation is allowed
to ignore any requirements for raising an exception with condition
type &violation (or any of its subtypes)". Is this correct?

Also, as far as errors (such as attempting to open a nonexistent
file) are concerned, implementations cannot ignore these errors
even under unsafe mode since such errors raise &error which is
*not* a subtype of &violation. Is this also correct?

Thanks.

Aziz,,,
Received on Wed Nov 01 2006 - 03:29:57 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:00 UTC