I am posting this as an individual member of the Scheme
community. I am not speaking for the R6RS editors.
William D Clinger <will_at_ccs.neu.edu> writes:
> The most important issue is whether it is truly
> necessary to specify the value returned by the
> procedures that, in the current draft, are required
> to return the unspecified value. Speaking only for
> myself, the most compelling reason has been the
> propensity of programmers to return zero values,
> and of SRFI authors to advocate the return of zero
> values, out of ignorance or disregard for the fact
> that, in the R5RS semantics, portable code cannot
> return zero values to continuations that weren't
> created by call-with-values. This problem could
> have been solved by requiring continuations that
> expect a single value to coerce zero values into
> an unspecified value, or into some specific value
> (e.g. the oxymoronic unspecified value), but the
> editors decided not to require that. They did
> require certain contexts that, in an intuitive
> sense, should ignore their values, to ignore their
> values in fact, but that partial solution does not
> solve the problem for other R5RS-compatible code,
> e.g.
>
> (let* ((v (f ...))
> (ignored (vector-set! v i ...))
> (v2 (g v ...)))
> ...)
>
> Another issue, if there is going to be a specific
> unspecified value, is the name of the procedure
> that returns it.
One alternative to deal with this would be to truly have (unspecified)
return an unspecified number of unspecified values (in the sense of
"the report doesn't tell you how many and what they are) with the
constraint that (unspecified) must be able to return to a continuation
that accepts a single value. This would keep code such as the above
working, and make the name more appropriate.
--
Cheers =8-} Mike
Friede, V?lkerverst?ndigung und ?berhaupt blabla
Received on Fri Oct 06 2006 - 09:44:50 UTC