Final SRFI 155: Promises Arthur A. Gleckler 16 Sep 2018 00:00 UTC

Scheme Request for Implementation 155,
by Marc Nieper-Wißkirchen,
has gone into "final" status.

The document and an archive of the discussion are available at

Here's the abstract:

  Scheme, like ML, is a programming language with strict
  evaluation while others, like Haskell, use lazy evaluation.
  Scheme, however, possesses the primitives delay and force that
  make it possible to express lazy algorithms.

  Lazy evaluation does not go well in conjunction with imperative,
  non-functional, side-effecting code.  It should, however, be
  applicable in a purely functional setting.  This is the case for
  the delayed evaluation model as described in the R7RS as long as
  no dynamically bound variables, also known as parameter objects,
  are present.  It is the purpose of this SRFI to rework the
  specification in the R7RS so that lazy evaluation works with
  purely functional code that makes use of dynamic environments
  or, more generally, the dynamic extent.  This is done by
  remembering the dynamic extent in effect when the delay
  expression is evaluated.

  Another perceived misfeature of the R7RS model of delayed
  evaluation is the apparent need of the delay-force special form
  to express iterative lazy algorithms.  It is shown that the
  delay-force special form is unneeded and that the implementation
  can (and should) handle iterative lazy algorithms without space

Many thanks to Marc and to everyone who contributed to the
discussion of this SRFI.


SRFI Editor