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