Make promise.ss use #%kernel directly -- this way mzscheme does not

depend on scheme/base.

svn: r10424
This commit is contained in:
Eli Barzilay 2008-06-23 14:32:27 +00:00
parent 3619ab2062
commit 04b97ff977

View File

@ -1,4 +1,8 @@
#lang scheme/base (module promise '#%kernel
(#%require "private/small-scheme.ss" "private/more-scheme.ss" "private/define.ss"
(rename "private/define-struct.ss" define-struct define-struct*)
(for-syntax '#%kernel "private/stxcase-scheme.ss"))
(#%provide lazy delay force promise?)
;; This module implements "lazy promises" and a `force' that is iterated ;; This module implements "lazy promises" and a `force' that is iterated
;; through them. ;; through them.
@ -14,9 +18,6 @@
;; promise values), and `force'+`lazy' are sufficient for implementing ;; promise values), and `force'+`lazy' are sufficient for implementing
;; the lazy language. ;; the lazy language.
(require (for-syntax scheme/base))
(provide lazy delay force promise?)
(define (promise-printer promise port write?) (define (promise-printer promise port write?)
(let loop ([p (promise-val promise)]) (let loop ([p (promise-val promise)])
(cond [(reraise? p) (cond [(reraise? p)
@ -37,7 +38,7 @@
[else [else
(display "#<promise!(values" port) (display "#<promise!(values" port)
(let ([fmt (if write? " ~s" " ~a")]) (let ([fmt (if write? " ~s" " ~a")])
(for ([x p]) (fprintf port fmt x))) (for-each (lambda (x) (fprintf port fmt x)) p))
(display ")>" port)]))) (display ")>" port)])))
(define-struct promise (val) (define-struct promise (val)
@ -126,3 +127,5 @@
[else (apply values p)])) [else (apply values p)]))
;; different from srfi-45: identity for non-promises ;; different from srfi-45: identity for non-promises
promise)) promise))
)