Hello all,
After some discussion with Eli Barzilay on the SRFI-45 mailing list [1],
I've come to believe it's a mistake to extend it in a suboptimal way.
'eager' should have the same API as 'delay'. I'd rather do the job
right, even if that means moving it to a different module.
I think we should back out this change to SRFI-45. The only thing I
think we should keep is the addition of 'promise?' to the list of
exports (as is done in Racket).
What do other people think?
Mark
[1] http://srfi.schemers.org/srfi-45/post-mail-archive/maillist.html
--- Begin Message ---
Hi Eli,
Eli Barzilay <e...@barzilay.org> writes:
> 30 minutes ago, Mark H Weaver wrote:
>>
>> I agree that it's unfortunate to destroy the symmetry between
>> 'eager' and 'delay', but I see no way to support multiple values
>> without either destroying that symmetry or breaking compatibility
>> with SRFI-45.
>
> IMO, having a good, uniform API is *far* more important than keeping
> `eager' a function. [...]
>
>> If you can suggest a better way to add support for multiple values
>> that is compatible with SRFI-45, I'd be glad to hear it.
>
> Write a new short srfi which will say "same as srfi-45, except that
> `eager' is a macro", then add multiple values. Seriously.
Having thought more on this, I've come to agree with you. It's a
mistake to bend over backwards to remain compatible with SRFI-45.
It's more important to promote the best API we can come up with.
Users wouldn't be able to rely on SRFI-45 having my proposed extension
anyway. I think we will abandon this proposed extension for Guile, and
leave SRFI-45 alone.
Maybe it _is_ time for a new SRFI.
Thanks,
Mark
--- End Message ---