diff --git a/racket/collects/racket/private/promise.rkt b/racket/collects/racket/private/promise.rkt index e08ca2d451..a94762273e 100644 --- a/racket/collects/racket/private/promise.rkt +++ b/racket/collects/racket/private/promise.rkt @@ -113,10 +113,11 @@ v)))) ;; dispatcher for composable promises, generic promises, and other values -(define (force promise) - (if (promise? promise) - ((promise-forcer promise) promise) ; dispatch to specific forcer - promise)) ; different from srfi-45: identity for non-promises +(define (force v) + (let ([forcer (promise-forcer v #f)]) + (if forcer + (forcer v) ; dispatch to specific forcer + v))) ; different from srfi-45: identity for non-promises ;; ---------------------------------------------------------------------------- ;; Struct definitions