19 lines
466 B
Scheme
19 lines
466 B
Scheme
#lang scheme/base
|
|
|
|
(require (for-syntax scheme/base)
|
|
(for-template scheme/base))
|
|
|
|
(provide inline-rules)
|
|
|
|
(define-syntax-rule (inline-rules orig-id [pat result] ...)
|
|
(make-set!-transformer
|
|
(lambda (stx)
|
|
(syntax-case stx (set!)
|
|
[(set! . _)
|
|
(raise-syntax-error #f
|
|
"cannot mutate"
|
|
stx)]
|
|
[pat #'result] ...
|
|
[(id . args) #'(orig-id . args)]
|
|
[id #'orig-id]))))
|