Copyright (c) 2011 Generation Capital, Ltd. All rights reserved.
Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies. Generation Capital, Ltd. makes no representations about
the suitability of this software for any purpose. It is provided
as is
without express or implied warranty.
INTERFACEQPromise ; FROM Quake IMPORT Error; IMPORT Thread, Process;
deferred execution in Quake
see delayed evaluation
in Abelson and Sussman,
Structure and Interpretation of Computer Programs,
for the inspiration to this.
Author : Mika Nystrom <mika@alum.mit.edu>
TYPE ExitCode = Process.ExitCode; T = OBJECT METHODS fulfil() : ExitCode RAISES { Error, Thread.Alerted } (* force the promise *) END; Empty <: T; (* empty is a promise that does nothing when forced *) CONST Brand = "QPromise"; CONST Equal : PROCEDURE(a, b : T) : BOOLEAN = NIL; END QPromise.