Car e cdr: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
m ortografia
Riga 21:
}}</ref>
 
I nomi <code>first</code> e <code>rest</code> sono alternative moderne comuni a <code>car</code> e <code>cdr</code> per la loro maggiore chiarezza, ma, oltre che per motivi storici e di abitudine, <code>car</code> e <code>cdr</code> continuano a essere utilizzati anche perché offrono il vantaggio di poter esprimere loro corte [[Composizione di funzioni|composizioni]] attraverso funzioni equivalenti con nomi corti e più o meno pronunciabili. Per esempio, <code>(cadr '(1 2 3))</code> è equivalente a <code>(car (cdr '(1 2 3))</code>; il suo valore è <code>2</code> (il primo elemento del resto di <code>(1 2 3)</code>). In modo simile, <code>(caarcar '((1 2) (3 4)))</code> è lo stesso di <code>(car (car '((1 2) (3 4))))</code>; il suo valore è <code>1</code>. La maggior parte delle implementazioni Lisp imposta un limite massimo al numero di forme composte che supportano; il [[Common LISP]] e lo [[Scheme]], per esempio, forniscono forme con fino a quattro ripetizioni di ''a'' e ''d''. Mentre non risulta chiaro se forme composte complesse come <code>(cadadr ...)</code> risultino per un occhio non allenato più semplici da leggere rispetto alla forma estesa <code>(car (cdr (car (cdr ...))))</code>, queste forme composte risultano però convenienti per certi usi idiomatici, come disassemblare liste che rappresentano [[Codice sorgente|codice]]. Per esempio, data un'[[Lambda calcolo|espressione lambda]] come la seguente:
 
(lambda (a b) (una-cosa) (un-altra-cosa))