Re: [Scheme-reports] Formal Comment: what is the required behavior of 'lazy'?
Alex Shinn 27 Jun 2012 20:15 UTC
On Wed, Jun 27, 2012 at 11:58 AM, Richard Kelsey <kelsey@s48.org> wrote:
> Formal Comment
>
> Submitter's name: Richard Kelsey
> Submitter's email: kelsey at s48.org
> Relevant draft: r7rs draft 6
>
> Type: clarification
> Priority: minor
> Relevant section of draft: Derived expression types
>
> Summary: 'lazy' is underspecified
>
> The description of (lazy <expression>) says
>
> The returned promise, when forced, will evaluate to whatever the
> original promise would have evaluated to if it had been forced.
>
> This describes what
>
> (delay (force <expression>))
>
> does. On the other hand, the description of the stream-filter example
> says that '(lazy <x>)' is not the same as '(delay (force <x>))'. If
> this is true, the description of 'lazy' needs to say what the
> difference is.
Thanks! This had already been fixed in the repository and
currently reads:
The expression (delay-force expression) is conceptually similar to
(delay (force expression)), with the difference that forcing the
result of delay-force will in effect result in a tail call to (force
expression), while forcing the result of (delay (force expression))
may not. Thus iterative lazy algorithms that may result in a long
series of chains of delay and force can be rewritten using
delay-force to prevent consuming unbounded space during evaluation.
(where lazy has been renamed delay-force).
--
Alex
_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports