Dire che ho una funzione foo:Come posso unire un elenco al di fuori di una macro in Common Lisp?
(defun foo (x y &rest args) ...)
E poi voglio avvolgerla con una barra delle funzioni:
(defun bar (x &rest args) (foo x 100 args))
assumere bar è stato poi chiamato in questo modo: (bar 50 1 2 3)
Con questa configurazione, args è un elenco all'interno del corpo della barra che contiene i parametri finali, quindi quando lo passo a foo, invece di ottenere t lui equivalente di (foo 50 100 1 2 3)
Io ovviamente ottengo (foo 50 100 '(1 2 3))
. Se queste fossero macro, userei `` (foo, x 100, @ args) `nel corpo della barra per unire gli args alla chiamata di funzione. , @ funziona solo all'interno di un elenco tra virgolette, comunque.
Come posso eseguire lo stesso tipo di giunzione all'interno di una funzione normale?
che era troppo facile –
+1: mi hai salvato la giornata! O, almeno, mi hai salvato dall'incidere una soluzione molto brutta. – Giorgio
Mi sono imbattuto in questo problema oggi, l'applicazione non funziona perché la "funzione" che volevo applicare è e, che in realtà è una macro! – PuercoPop