leppie scripsit:

> Under the documentation for letrec and letrec* the following is said
> [1]: "Another restriction is that the continuation of each <init>
> should not be invoked more than once." ... "Implementations may or may
> not detect that the continuation of each <init> is invoked more than
> once. However, if the implementation detects this, it must raise an
> exception with condition type &assertion. "
> 
> 1. What does 'should' imply here? (it is not required, but 'how much'
> desired?)

R6RS, tracking RFC 2119, defines SHOULD NOT as "that valid reasons may
exist in particular circumstances to ignore a statement, but that the
implications must be understood and weighed before choosing a different
course."

The Report adds "In particular, this report occasionally uses 'should'
[or 'should not'] to designate circumstances that are outside the
specification of this report, but cannot be practically detected by an
implementation; see section 5.4. In such circumstances, a particular
implementation may allow the programmer to ignore the recommendation
of the report and even exhibit reasonable behavior. However, as the
report does not specify the behavior, these programs may be unportable,
that is, their execution might produce different results on different
implementations."

> 4. What are the reasoning behind this?

It's too hairy to handle correctly.

-- 
Some people open all the Windows;       John Cowan
wise wives welcome the spring           [EMAIL PROTECTED]
by moving the Unix.                     http://www.ccil.org/~cowan
  --ad for Unix Book Units (U.K.)
        (see http://cm.bell-labs.com/cm/cs/who/dmr/unix3image.gif)

_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to