uso textuales teclado simples rae ejemplos dobles comillas citas macros lisp

macros - textuales - uso de comillas rae



¿Hay algún uso para comillas dobles(comas dobles) cuando se define una macro Lisp? (1)

Por supuesto.

Aquí está el código del "On Lisp" de Graham :

(defmacro =defun (name parms &body body) (let ((f (intern (concatenate ''string "=" (symbol-name name))))) `(progn (defmacro ,name ,parms `(,'',f *cont* ,,@parms)) (defun ,f (*cont* ,@parms) ,@body))))

Otro ejemplo es clx/gcontext.lisp :

(macrolet ((def-gc-internals (name &rest extras) (let ((macros nil) (indexes nil) (masks nil) (index 0)) (dolist (name *gcontext-components*) (push `(defmacro ,(xintern ''gcontext-internal- name) (state) `(svref ,state ,,index)) macros) (setf (getf indexes name) index) (push (ash 1 index) masks) (incf index)) (dolist (extra extras) (push `(defmacro ,(xintern ''gcontext-internal- (first extra)) (state) `(svref ,state ,,index)) macros) ;; don''t override already correct index entries (unless (or (getf indexes (second extra)) (getf indexes (first extra))) (setf (getf indexes (or (second extra) (first extra))) index)) (push (logior (ash 1 index) (if (second extra) (ash 1 (position (second extra) *gcontext-components*)) 0)) masks) (incf index)) `(within-definition (def-gc-internals ,name) ,@(nreverse macros) (eval-when (:execute :compile-toplevel :load-toplevel) (defparameter *gcontext-data-length* ,index) (defparameter *gcontext-indexes* '',indexes) (defparameter *gcontext-masks* '',(coerce (nreverse masks) ''simple-vector))))))) (def-gc-internals ignore (:clip :clip-mask) (:dash :dashes) (:font-obj :font) (:timestamp)))

En resumen, esto no es muy común, pero no es algo inaudito.

Cuando uno define una macro que usa una macrolet, o define una macro que define una macro, parece que uno usa ,'', o , para unir cosas. ¿Hay algún caso en el que necesite usar ,, ?