This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki StandardConditionsCowan version 1

author

cowan

comment


    

ipnr

198.185.18.207

name

StandardConditionsCowan

readonly

0

text


== Introduction ==

The procedures in this package allow programs to analyze condition objects representing exceptions reported by a Scheme implementation.  Although they have the same names as their R6RS equivalents, they are meant to be implementable on top of arbitrary Scheme objects, not just records.  Each predicate returns `#t` if the argument is an object representing the situation described for that predicate, and `#f` on all other objects.  This package does not provide constructors for these conditions, nor any way to subclass them.

"Implies" means that if this predicate returns `#t`, the specified predicate also returns `#t`.  This relationship is transitive.  "Implied by" means that if the specified predicate returns `#t`, this predicate also returns `#t`.

It is an error to call an accessor procedure associated with a predicate on an object on which the predicate returns `#f`.

== General conditions ==

`(warning? `''obj''`)`

Returns `#t` if ''obj'' represents a condition that does not, in principle, prohibit immediate continued execution of the program, but may interfere with the program’s execution later.

`(serious-condition? `''obj''`)`

Returns `#t` if ''obj'' represents a condition serious enough that it cannot safely be ignored.

`(error? `''obj''`)`

Implies `serious-condition?`.  Implied by `error-object?` in the small language.  Returns `#t` if ''obj'' represents an error, typically caused by something that has gone wrong in the interaction of the program with the external world or the user.

`(violation? `''obj''`)`

Implies `serious-condition?`.  Returns `#t` if ''obj'' represents an violation of the language standard or a library standard, typically caused by a programming error.

`(assertion-violation? `''obj''`)`

Implies `violation?`.  Returns `#t` if ''obj'' represents an invalid call to a procedure, either passing an invalid number of arguments, or passing an argument of the wrong type.

`(non-continuable-violation? `''obj''`)`

Implies `violation?`.  This type indicates that an exception handler invoked via raise has returned.

`(implementation-restriction-violation? `''obj''`)`

Implies `violation?`.  Returns `#t` if ''obj'' represents a violation of an implementation restriction allowed by the specification, such as being out of memory or the absence of representations for !NaNs and infinities.

`(lexical-violation? `''obj''`)`

Implies `violation?`.  Returns `#t` if ''obj'' represents a syntax violation at the level of the datum syntax.

`(syntax-violation? `''obj''`)`

`(syntax-violation-form condition)`

`(syntax-violation-subform condition)`

Implies `violation?`.  Returns `#t` if ''obj'' represents a syntax violation.  `Syntax-violation-form` returns an erroneous syntax object or a datum representing the code of the erroneous form. `Syntax-violation-subform` returns an optional syntax object or datum within the erroneous form that more precisely locates the violation. Either accessor procedure can return `#f` to indicate the absence of more precise information.

`(undefined-violation? `''obj''`)`

Implies `violation?`.  Returns `#t` if ''obj'' represents an unbound identifier in the program.

== Condition content ==

`(message-condition? `''obj''`)`

`(condition-message condition)`

Implied by `error-object?` in the small language.  Returns `#t` if ''obj'' contains a string message further describing the nature of the condition to humans.  `Condition-message` returns the string.

`(irritants-condition? `''obj''`)`

`(condition-irritants condition)`

Implied by `error-object?` in the small language.  Returns `#t` if ''obj'' contains a list of objects called "irritants", typically the argument list of a procedure that detected an exception.  `Condition-irritants` returns the list of objects.

`(who-condition? `''obj''`)`

`(condition-who condition)`

Returns `#t` if ''obj'' contains a symbol or string identifying the entity reporting the exception, or `#f` if the entity is not known.  `Condition-who` returns the value.

== I/O conditions ==

`(i/o-error? `''obj''`)`

Implies `error?`.  Returns `#t` if ''obj'' represents an I/O error.

`(i/o-read-error? `''obj''`)`

Implies `i/o-error?`.  Returns `#t` if ''obj'' represents a read error that occurred during an I/O operation.

`(i/o-write-error? `''obj''`)`

Implies `i/o-error?`.  Returns `#t` if ''obj'' represents a write error that occurred during an I/O operation.

`(i/o-invalid-position-error? `''obj''`)`

`(i/o-error-position condition)`

Implies `i/o-error?`.  Returns `#t` if ''obj'' represents an attempt to set the file position to an invalid position. `I/o-error-position` returns the file position that the program intended to set.

`(i/o-filename-error? `''obj''`)`

`(i/o-error-filename condition)`

Implies `i/o-error?`.  Returns `#t` if ''obj'' represents an I/O error that occurred during an operation on a named file. `I/o-error-filename` returns the name of the file.

`(i/o-file-protection-error? `''obj''`)`

Implies `i/o-filename-error?`.  Returns `#t` if ''obj'' represents an operation that tried to operate on a named file with insufficient access rights.

`(i/o-file-is-read-only-error? `''obj''`)`

Implies `i/o-file-protection-error?`.  Returns `#t` if ''obj'' represents an operation tried to operate on a named read-only file under the assumption that it is writeable.

`(i/o-file-already-exists-error? `''obj''`)`

Implies `i/o-filename-error?`.  Returns `#t` if ''obj'' represents that an operation tried to operate on an existing named file under the assumption that it did not exist.

`(i/o-file-does-not-exist-error? `''obj''`)`

Implies `i/o-filename-error?`.  Returns `#t` if ''obj'' represents an operation that tried to operate on an non-existent named file under the assumption that it existed.

`(i/o-port-error? `''obj''`)`

`(i/o-error-port condition)`

Implies `i/o-error?`.  Returns `#t` if ''obj'' contains a port with which an I/O error is associated. `I/o-error-port` returns the port.

`(i/o-decoding-error? `''obj''`)`

Implies `i/o-port-error?`.  Returns `#t` if ''obj'' represents an operation for textual input from a port that encounters a sequence of bytes that cannot be translated into a character or string by the input direction of the port’s transcoder.

`(i/o-encoding-error? `''obj''`)`

`(i/o-encoding-error-char condition)`

Implies `i/o-port-error?`.  Returns `#t` if ''obj'' represents an operation for textual output to a port encounters a character that cannot be translated into bytes by the output direction of the port's transcoder. `I/o-encoding-error-char` returns the character that could not be encoded.

== Numeric conditions ==

`(no-infinities-violation? `''obj''`)`

Implies `implementation-restriction-violation?`.  Returns `#t` if ''obj'' represents an arithmetic operation that is specified to return an infinity on a Scheme implementation that is not able to represent the infinity.

`(no-nans-violation? `''obj''`)`

Implies `implementation-restriction-violation?`.  Returns `#t` if ''obj'' represents an arithmetic operation that is specified to return a NaN on a Scheme implementation that is not able to represent the NaN.

time

2012-07-12 11:59:22

version

1