Trampolino (trampoline)
Pattern per simulare l'ottimizzazione delle chiamate di coda nei linguaggi che non la prevedono. La funzione ricorsiva restituisce una funzione («thunk») invece di richiamarsi direttamente; un ciclo principale esegue i thunk uno dopo l'altro ed evita lo stack overflow.
Pattern classico di Scheme, prima che la TCO fosse standardizzata. Si usa per algoritmi profondamente ricorsivi in JS/Python/Java, che non hanno la TCO. Librerie: trampoline.js, clojure.core/trampoline. Costo: una chiamata di funzione per ogni «rimbalzo» rispetto alla ricorsione diretta. Casi reali: macchine a stati con transizioni in coda, funzioni mutuamente ricorsive. In JS la TCO è nella specifica ES6, ma nessun browser (a parte Safari) l'ha implementata, per ragioni di debugging. Python non l'ha per scelta: Guido la giudicò troppo confusa per il debugging. Il trampolino è il ripiego.