<div dir="ltr"><div><div>Marc,<br><br></div>in _std.scm you have the following code implementing force:<br><br>(define-prim (##force obj)<br>  (if (##promise? obj)<br>      (let ((result (##promise-result obj)))<br>        (if (##eq? result obj)<br>            (let* ((r ((##promise-thunk obj)))<br>                   (result2 (##promise-result obj)))<br>              (if (##eq? result2 obj)<br>                  (begin<br>                    (##promise-result-set! obj r)<br>                    (##promise-thunk-set! obj #f)<br>                    r)<br>                  result2))))<br></div>            ;; XXX -- value is unspecified when (not (##eq? result obj))<br><div><div><div>      obj))<br><br></div><div>I find it very strange that the first if eq test of the result to the promise is lacking the else part;<br></div><div>that's where I marked with XXX. <br>Shouldn't the code return result in this case?<br></div><div>What am I missing here?<br><br></div><div>-- vyzo<br></div></div></div></div>