<br><br><div class="gmail_quote">2012/7/10 Davide Rambaldi <span dir="ltr"><<a href="mailto:davide.rambaldi@gmail.com" target="_blank">davide.rambaldi@gmail.com</a>></span></div><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word"><div>Ma non viene descritto in Dive into Python (almeno non nei primi11 capitoli che mi sono sparato)</div></div></blockquote><div><br></div><div> Direi che quel libro e' vecchio come il cucco...</div>

<div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div></div><div>Che funzione ha?</div></div>

</blockquote><div><br></div><div>Implementare anamorfismi con sintassi e semantica imperative... </div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word"><div></div><div>Ad occhio mi sembra pił simile ad uno strumento per fare iteration in strutture dati (stile STL in C++)</div></div></blockquote><div><br></div><div>E' uno strumento per fare iterazione (fra le varie cose). Anzi... direi per fare *generazione*. E di fatto non e' particolarmente legato al concetto di struttura dati, anzi, essenzialmente e' completamente ortogonale. Che poi funzioni bene anche con le strutture dati e' ovviamente un'altra questione.</div>

<div><br></div><div>In pratica una funzione che contiene yield diventa "magica". Invece di ritornare un valore, ritorna un generatore.</div><div>Quando tu cerchi di ottenere un elemento dal generatore, lui esegue il corpo della funzione fino a trovare uno yield e poi ritorna il valore yieldato. Quando gli chiedi un altro valore, lui riparte da dove era arrivato e va fino al successivo. Quando la cosa termina, lancia StopIteration.</div>

<div><br></div><div>Per dire... puoi usare la cosa sia per fare un affare che ti fa visite su un grafo, sia un coso che ti genera tutti i primi (ovviamente un numero arbitrariamente grande di essi, tutti no poiche' sono infiniti).</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div></div><div>Come lo utilizzate in python?</div></div></blockquote>

<div><br></div><div>Generatori, coroutines, lazyness, concorrenza, cornetto & cappuccino.</div></div><br clear="all"><div><br></div>-- <br> .<br>..: -enrico-<br>