Skip to content

Instantly share code, notes, and snippets.

@jneira
Created January 6, 2011 22:01
Show Gist options
  • Save jneira/768685 to your computer and use it in GitHub Desktop.
Save jneira/768685 to your computer and use it in GitHub Desktop.
;;1.48 No todos los sistemas de LISP implementan el mecanismo
;;Backquote. Definir BACKQUOTE de forma que tenga el mismo
;;efecto que Backquote y permita manejar de forma apropiada
;;expresiones como COMA y COMA-AT de la forma que se
;;muestra en el siguiente ejemplo:
;;> (BACKQUOTE (A B (LIST ‘C ‘D) (COMA (LIST ‘E ‘F)
;; (COMA-AT (LIST ‘G ‘H)))
;;(A B (LIST ‘C ‘D) (E F) G H)
(defmacro backquote (expr)
(labels
((step (p n)
(append p
(if (atom n) (list n)
(case (car n)
('comma (list (eval (cadr n))))
('comma-at (eval (cadr n))))))))
(list 'quote (reduce #'step (cons () expr)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment