Guest User

Untitled

a guest
Jun 8th, 2026
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.89 KB | None | 0 0
  1. (defmacro macro-result ((&rest let-args) &body body)
  2.   (let ((argument-info (map 'list (lambda (let-arg)
  3.                                     (list (first let-arg) (gensym) (second let-arg)))
  4.                             let-args)))
  5.     (if (null argument-info)
  6.       ``(progn ,@',body)
  7.       `(let ,(loop :for argument-tuple :in argument-info
  8.                    :collect `(,(second argument-tuple) ,(third argument-tuple)))
  9.          `(let ,(list ,@(loop :for argument-tuple :in argument-info
  10.                               :collect ``(,',(first argument-tuple) ,,(second argument-tuple))))
  11.             ,@',body)))))
  12.  
  13.  
  14. (defun generate-code-inside-macro (fun one two)
  15.   (macro-result ((op fun)
  16.                  (arg1 one)
  17.                  (arg2 two))
  18.     (format t "~A <- (~A ~A ~A)~&" (funcall op arg1 arg2) op arg1 arg2)))
  19.  
  20. (defmacro macro-caller ()
  21.   (generate-code-inside-macro #'+ 1 2))
  22.  
Advertisement
Add Comment
Please, Sign In to add comment