mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-19 05:39:17 +02:00
Cleanup, added (promise?)
This commit is contained in:
parent
2f89b7c825
commit
0c551e1b39
1 changed files with 6 additions and 43 deletions
|
@ -5,48 +5,10 @@
|
|||
force
|
||||
delay-force
|
||||
make-promise
|
||||
;promise?
|
||||
promise?
|
||||
)
|
||||
(begin
|
||||
; (define (make-promise x)
|
||||
; (delay x))
|
||||
; ;)
|
||||
; ;(begin
|
||||
; (define (promise? x)
|
||||
; (and (pair? x)
|
||||
; (null? (cdr x))
|
||||
; (pair? (car x))
|
||||
; (or (eq? #t (caar x))
|
||||
; (and (eq? #f (caar x))
|
||||
; (procedure? (cdar x))))))
|
||||
;
|
||||
; (define-syntax delay-force
|
||||
; (er-macro-transformer
|
||||
; (lambda (expr rename compare)
|
||||
; `(,(rename 'promise) #f (,(rename 'lambda) () ,(cadr expr))))))
|
||||
;
|
||||
; (define-syntax delay
|
||||
; (er-macro-transformer
|
||||
; (lambda (expr rename compare)
|
||||
; `(,(rename 'delay-force) (,(rename 'promise) #t ,(cadr expr))))))
|
||||
;
|
||||
; (define (promise done? proc)
|
||||
; (list (cons done? proc)))
|
||||
; (define (promise-done? x) (car (car x)))
|
||||
; (define (promise-value x) (cdr (car x)))
|
||||
; (define (promise-update! new old)
|
||||
; (set-car! (car old) (promise-done? new))
|
||||
; (set-cdr! (car old) (promise-value new))
|
||||
; (set-car! new (car old)))
|
||||
; (define (force promise)
|
||||
; (if (promise-done? promise)
|
||||
; (promise-value promise)
|
||||
; (let ((promise* ((promise-value promise))))
|
||||
; (if (not (promise-done? promise))
|
||||
; (promise-update! promise* promise))
|
||||
; (force promise))))))
|
||||
|
||||
;; Delayed evaluation functions from husk
|
||||
(define force
|
||||
(lambda (object)
|
||||
(object)))
|
||||
|
@ -55,14 +17,11 @@
|
|||
(er-macro-transformer
|
||||
(lambda (expr rename compare)
|
||||
`(make-promise (lambda () ,(cadr expr))))))
|
||||
|
||||
(define-syntax delay-force
|
||||
(er-macro-transformer
|
||||
(lambda (expr rename compare)
|
||||
`(make-promise (lambda () ,(cadr expr))))))
|
||||
;(define-syntax delay
|
||||
; (syntax-rules ()
|
||||
; ((delay expression)
|
||||
; (make-promise (lambda () expression)))))
|
||||
|
||||
(define make-promise
|
||||
(lambda (proc)
|
||||
|
@ -77,4 +36,8 @@
|
|||
(begin (set! result x)
|
||||
(set! result-ready? #t)
|
||||
result))))))))
|
||||
|
||||
;; Not a very satisfying implementation, but would need to change
|
||||
;; how promises are stored to do better
|
||||
(define promise? procedure?)
|
||||
))
|
||||
|
|
Loading…
Add table
Reference in a new issue