Al momento sto lavorando a "Practical Common Lisp" di Peter Seibel.LISP: Parametri parola chiave, fornito-p
Nel capitolo "Pratico: un semplice database" (http://www.gigamonkeys.com/book/practical-a-simple-database.html) Seibel spiega i parametri di parole chiave e l'utilizzo di un parametro fornito con il seguente esempio:
(defun foo (&key a (b 20) (c 30 c-p)) (list a b c c-p))
Risultati:
(foo :a 1 :b 2 :c 3) ==> (1 2 3 T)
(foo :c 3 :b 2 :a 1) ==> (1 2 3 T)
(foo :a 1 :c 3) ==> (1 20 3 T)
(foo) ==> (NIL 20 30 NIL)
Quindi, se uso la chiave & all'inizio del mio elenco di parametri, ho la possibilità di utilizzare un elenco di 3 nomi di parametri, il valore predefinito e il terzo se il parametro è stato fornito o meno. Ok. Ma guardando il codice nell'esempio di cui sopra:
(list a b c c-p)
Come si fa l'interprete Lisp sanno che c-p è il mio "parametro fornito"?
Aaah capito :-) c-p viene semplicemente aggiunto alla lista come a, b e c e non è un "parametro fornito" per "una lista è stata impostata/non impostata". Ci vuole un po 'di tempo per abituarsi alla sintassi, anche se è davvero facile. :-) Grazie! – echox