on-demand.rkt (378B)
1 #lang racket/base 2 (require racket/promise 3 (for-syntax racket/base)) 4 (provide define-on-demand) 5 6 (define-syntax-rule (define-on-demand id rhs) 7 (begin 8 (define define-on-demand-bound-promise (delay rhs)) 9 (define-syntax (id stx) 10 (if (identifier? stx) 11 #'(force define-on-demand-bound-promise) 12 (raise-syntax-error #f "bad syntax" stx)))))