Advertisement
konalisp

crutches

Apr 21st, 2015
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.73 KB | None | 0 0
  1. ;;For Chicken Scheme only. Other lisps are sane enough to still support (define-macro).
  2. (define-syntax define-macro
  3.     (er-macro-transformer
  4.         (lambda (exp rename compare)
  5.             (if (symbol? (cadr exp))
  6.                 (let ((name (cadr exp))
  7.                     (expndr (caddr exp))
  8.                     (-exp (gensym)) (-rename (gensym)) (-compare (gensym)))
  9.                 `(define-syntax ,name
  10.                     (er-macro-transformer (lambda (,-exp ,-rename ,-compare)
  11.                         (apply ,expndr (cdr ,-exp))))))
  12.                 (let ((name (caadr exp))
  13.                     (formals (cdadr exp))
  14.                     (body (cddr exp))
  15.                     (-exp (gensym)) (-rename (gensym)) (-compare (gensym)))
  16.                 `(define-syntax ,name
  17.                     (er-macro-transformer (lambda (,-exp ,-rename ,-compare)
  18.                         (apply (lambda ,formals ,@body) (cdr ,-exp))))))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement