[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The basic strategy for representing the results of exceptional conditions arising from the evaluation of operands on a given level of the hierarchy will be to use an error message corresponding to the image of a list of character strings on the level above.
Unfortunately, the official silly
standard does not
define character constants, but they are available as a vendor specific
extension in silly-me
(millennium edition), where character strings
may be enclosed in single quotes. The value of the semantic
function [[…]] in the case of a character string is the list
of representations of the characters, based on Character Table
and Representation of Numeric and Textual Data.
For the sake of consistency, each standard error message is a list of
character strings, even though the list has only one string in it. If
any exceptional condition is the result of a computation, it is written
to standard error by avram
as the list of character strings it
represents.
([[compare
]] nil
)_n
= [[('invalid comparison',nil)
]]_(n+1)
([[left
]] nil
)_n
= [[('invalid deconstruction',nil)
]]_(n+1)
([[right
]] nil
)_n
= [[('invalid deconstruction',nil)
]]_(n+1)
(([[fan
]] f
)
nil
)_n
= [[('invalid deconstruction',nil)
]]_(n+1)
([[member
]] nil
)_n
= [[('invalid membership',nil)
]]_(n+1)
([[distribute
]] nil
)_n
= [[('invalid distribution',nil)
]]_(n+1)
([[cat
]] nil
)_n
= [[('invalid concatenation',nil)
]]_(n+1)
([[meta
]] nil
)_n
= [[('invalid recursion',nil)
]]_(n+1)
Note that by virtue of property P44, there is no need for an
application to make explicit checks for exceptional results at any
point, because the exceptional result propagates through to the output
of any function composed with the one that incurred it. For example, an
application of the form h = compose(f,right)
, which will cause an
invalid deconstruction error if applied in filter mode to an empty file,
imposes no requirement that f
be written to accommodate that
possibility (i.e., by checking for it) in order for the error to be
reported properly. The following proof demonstrates that the meaning of f
is irrelevant to the result.
[[ |
In an application h = compose(f,g)
, the input
validation therefore may be confined to the “front end”, g
.
It will be recalled from the discussions of recur
(Recur)
and transpose
(Transpose) that the semantics of
virtual code involving these forms is defined in terms of the
field
format for deconstruction functions (Field),
which depends implicitly on the semantics of left
and
right
, being a generalization of them. An invalid deconstruction
message could therefore result from applications incorporating any of
the forms of recur
, transpose
, or field
. Invalid
deconstructions could also arise from the replace
operation
(Replace), which is used for assignment (Assignment), because
replace
is defined by virtual code, except as noted next.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on November 8, 2012 using texi2html 1.82.