Re: [Scheme-reports] Some comments after reading the r7rs public draft
Per Bothner 12 Jun 2012 11:42 UTC
Implicit forcing of only traditional delay-type promises may add
limited extra "power", but I think they can become quite valuable
when you add futures to the mix. Remember that MultiScheme (and
before that MultiLisp) did automatic forcing of futures. Having
futures and lazy (delay-style) promises combined with implicit
forcing has the potential of a powerful and elegant mechanism
for parallel programming (obviously very important). It also seems
a good bridge between lazy and eager programming: Constructing
lazy expressions is explicit, evaluating them is implicit.
It also allows for a convenient and safe synchronization
mechanism (basically single-use mail-boxes), as used in the
Mozart/Oz/Alice family.
You can still test for promises in Kawa, as there are non-forcing
type predicates:
(promise? (delay 4)) => #t
(Though a future version of Kawa might optimize (delay 4) to 4,
that's OK, since I can't think of a use case for you needing
the delay to evaluate specifically to a promise.)
On 06/11/2012 12:34 PM, Ray Dillinger wrote:
> Sooner or later someone will need a '+' function that does *NOT*
> force promises, or that keeps track of the number of promises it
> forces and the time it spends forcing them, or something, and
> you've got to be careful to leave a way to define one.
Since I can't visualize such a hypothetical need, I choose to focus on
functionality that seems more useful.
Bottom line: I have a vision (or at least some ideas ...) for where to
take Kawa, and I think implicit forcing works well with that vision..
--
--Per Bothner
per@bothner.com http://per.bothner.com/
_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports