16 lines
525 B
Scheme
16 lines
525 B
Scheme
#lang scheme/base
|
|
(require (for-syntax "closure.ss")
|
|
(for-syntax scheme/base)
|
|
(for-template scheme/base))
|
|
(provide define-closure)
|
|
|
|
(define-syntax (define-closure stx)
|
|
(syntax-case stx ()
|
|
[(_ tag formals (free-vars ...) body)
|
|
(let-values ([(make-CLOSURE closure-definitions)
|
|
(make-closure-definition-syntax
|
|
#'tag
|
|
(syntax->list #'(free-vars ...))
|
|
#`(lambda formals body))])
|
|
#`(begin #,@closure-definitions))]))
|