11 lines
260 B
Racket
11 lines
260 B
Racket
#lang scheme
|
|
(provide define-on-demand)
|
|
|
|
(define-syntax-rule (define-on-demand id rhs)
|
|
(begin
|
|
(define val (delay rhs))
|
|
(define-syntax (id stx)
|
|
(if (identifier? stx)
|
|
#'(force val)
|
|
(raise-syntax-error #f "bad syntax" stx)))))
|