Files
dotfiles/cabal/share/x86_64-osx-ghc-7.8.4/zepto-0.6.3/stdlib/delay.scm
2015-04-05 17:47:08 +02:00

25 lines
717 B
Scheme

;; All implementations here are "borrowed" from
;; husk-scheme (github.com/justinethier/husk-scheme).
(define force
(lambda (object)
(object)))
(define-syntax delay
(syntax-rules ()
((delay expression)
(make-promise (lambda () expression)))))
(define make-promise
(lambda (proc)
(let ((result-ready? #f)
(result #f))
(lambda ()
(if result-ready?
result
(let ((x (proc)))
(if result-ready?
result
(begin (set! result x)
(set! result-ready? #t)
result))))))))