Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.51 KB | None | 0 0
  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))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement