C'è qualche motivo speciale per costruire una lista in Scheme che usi
(cons 1 (cons 2 (cons 3 nil)))
invece di
(cons 3 (cons 2 (cons 1 nil)))
? Mentre il primo sembra più ovvio perché legge nell'ordine corretto, il secondo è quello che riduce nell'ordine corretto. Inoltre, sembra più naturale costruire una lista partendo da zero e aggiungendo elementi ad essa, non il contrario. Ho anche scoperto che quest'ultimo ha proprietà come essere molto amichevole al curry: (cons 1)
diventa piacevolmente a function that appends 1 to a list
.