View difference between Paste ID: HSagiNpD and m9TjiNzT
SHOW: | | - or go back to the newest paste.
1
(define-syntax definem
2
  (lambda (x)
3
    (syntax-case x ()
4
      ((_ (macro . args) body ...)
5
       #'(definem macro (lambda* args body ...)))
6
        ((_ macro transformer)
7
         #'(define-syntax macro
8
             (lambda (y)
9
               (syntax-case y ()
10
                 ((_ . args)
11
                  (let ((v (syntax->datum #'args)))
12
                    (datum->syntax y (apply transformer v)))))))))))
13
14
15
(definem (test lst #:optional (fun car))
16
  `(,fun lst))
17
18-
(define lst (list 1 2 3 4))
18+
(define lst (list 1 2 3 4))
19
20
(test lst)