Scheme language standardization process
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 Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports