t-macros2.scm 359 B

123456789101112131415161718
  1. ;; Are macros well-expanded at compilation-time?
  2. (defmacro minus-binary (a b)
  3. `(- ,a ,b))
  4. (define-macro (plus . args)
  5. `(let ((res (+ ,@args)))
  6. ;;(format #t "plus -> ~a~%" res)
  7. res))
  8. (plus (let* ((x (minus-binary 12 7)) ;; 5
  9. (y (minus-binary x 1))) ;; 4
  10. (plus x y 5)) ;; 14
  11. 12 ;; 26
  12. (expt 2 3)) ;; => 34