[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] Some comments after reading the r7rs public draft

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@x   http://per.bothner.com/

Scheme-reports mailing list