fork download
  1. (defmacro lolmacro (&rest lists)
  2. (let ((llist '())
  3. (maps '()))
  4. (dolist (list lists)
  5. (let ((argname (gensym)))
  6. (setf llist (cons argname llist))
  7. (setf maps (cons `(map 'list (lambda (x) (* x ,argname)) ,list) maps))))
  8. `(lambda ,(reverse llist) (reverse (list ,@maps)))))
  9.  
  10. (defvar *loltwo* (lolmacro '(1 2 3) '(4 5 6)))
  11. (defvar *lolthree* (lolmacro '(1 2 3) '(4 5 6) '(7 8 9)))
  12.  
  13. (print (apply *loltwo* '(2 1)))
  14. (print (apply *lolthree* '(3 2 1)))
Success #stdin #stdout 0.02s 10600KB
stdin
Standard input is empty
stdout
((2 4 6) (4 5 6)) 
((3 6 9) (8 10 12) (7 8 9))