Scary warning text
This commit is contained in:
parent
da9d4dce32
commit
b333ed92fd
|
@ -17,6 +17,27 @@
|
||||||
|
|
||||||
The contract system implies the presence of a "monitoring system" that ensures that contracts are not violated. The @racketmodname[racket/contract] system compiles this monitoring system into checks on values that cross a contracted boundary. This module provides a facility to pass contract boundary crossing information to an explicit monitor for approval. This monitor may, for example, use state to enforce temporal constraints, such as a resource is locked before it is accessed.
|
The contract system implies the presence of a "monitoring system" that ensures that contracts are not violated. The @racketmodname[racket/contract] system compiles this monitoring system into checks on values that cross a contracted boundary. This module provides a facility to pass contract boundary crossing information to an explicit monitor for approval. This monitor may, for example, use state to enforce temporal constraints, such as a resource is locked before it is accessed.
|
||||||
|
|
||||||
|
@section{Warning! Experimental!}
|
||||||
|
|
||||||
|
This library is truly experimental and the interface is likely to
|
||||||
|
drastically change as we get more experience making use of temporal
|
||||||
|
contracts. In particular, the library comes with no advice about
|
||||||
|
designing temporal contracts, which are much more subtle than standard
|
||||||
|
contracts. This subtlety is compounded because, while temporal
|
||||||
|
contract violations have accurate blame information, we cannot yet
|
||||||
|
connect violations to sub-pieces of the temporal formula.
|
||||||
|
|
||||||
|
For example, applying @racket[f] to @racket["three"] when it is
|
||||||
|
contracted to only accept numbers will error by blaming the caller and
|
||||||
|
providing the explanation "expected a <number?>, received: "three"".
|
||||||
|
In contrast, applying @racket[g] to @racket["even"] and then to
|
||||||
|
@racket["odd"] when @racket[g] is contracted to accept strings on
|
||||||
|
every odd invocation, but numbers on every even invocation, will error
|
||||||
|
by blaming the second (odd) call, but will not provide any explanation
|
||||||
|
except "the monitor disallowed the call with arguments: "odd"".
|
||||||
|
Translating non-acceptance of an event trace by an automata into a
|
||||||
|
palatable user explanation is an open problem.
|
||||||
|
|
||||||
@section[#:tag "monitor"]{Monitors}
|
@section[#:tag "monitor"]{Monitors}
|
||||||
|
|
||||||
@defmodule[unstable/temp-c/monitor]
|
@defmodule[unstable/temp-c/monitor]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user