1(library (nmosh util multy-invoke) 2 (export multy-invoke) 3 (import (rnrs)) 4 5(define-syntax multy-invoke/list 6 (syntax-rules () 7 ((_ exp () () body ...) 8 (let () body ...)) 9 ((_ exp () x body ...) 10 (let ((x exp)) 11 body ...)) 12 ((_ exp (a0 a1 ...) x body ...) 13 (let ((a0 (car exp)) 14 (d (cdr exp))) 15 (multy-invoke/list d (a1 ...) x body ...))))) 16 17(define-syntax multy-invoke 18 (syntax-rules () 19 ((_ exp (a0 a1 ... . b) body ...) 20 (multy-invoke/list exp (a0 a1 ...) b body ...)))) 21 22 23) 24