Promises

See Promises for an introduction.

The following symbols are exported by the lparallel.promise package as well as by the convenience package lparallel.


[function]
chain object

Create a chain. A chain links objects together by relaying `force’ and `fulfilledp’ calls.

[macro]
delay &body body

Create a delay. A delay is a promise which is fulfilled when `force’ is called upon it.

[function]
force object

If `object’ is a promise and the promise is fulfilled, return the fulfilled value (possibly multiple values). If the promise is unfulfilled then the call blocks until the promise is fulfilled.

If `object’ is a chain, call `force’ on the chained object.

If `object’ is not a promise and not a chain, return the identical object passed.

Note if `force’ is called on an unfulfilled future then the future is fulfilled by the caller of `force’.

[macro]
fulfill object &body body

Attempt to give `object’ a value.

If `object’ is a promise which is not fulfilled and not currently being fulfilled, then the implicit progn `body’ will be executed and the promise will store the result. In this case `fulfill’ returns true.

If `object’ is a promise that is either already fulfilled or actively being fulfilled, then `body’ will not be executed and `fulfill’ returns false.

If `object’ is a chain, call `fulfill’ on the chained object.

If `object’ is not a promise and not a chain then false is returned immediately, with `body’ being ignored.

[function]
fulfilledp object

If `object’ is a promise, return a boolean indicating whether the promise is fulfilled.

If `object’ is a chain, call `fulfilledp’ on the chained object.

If `object’ is not a promise and not a chain, return true.

[macro]
future &body body

Create a future. A future is a promise which is fulfilled in parallel by the implicit progn `body’.

[function]
promise

Create a promise. A promise is a receptacle for a result which is unknown at the time it is created.

[macro]
speculate &body body

Create a speculation. A speculation is a low-priority future.