Make promise.ss use #%kernel directly -- this way mzscheme does not
depend on scheme/base. svn: r10424
This commit is contained in:
parent
3619ab2062
commit
04b97ff977
|
@ -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))
|
||||||
|
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user