<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Ok mi sembra di aver capito….<div><br></div><div><div><br></div><div>Sembra anche decisamente piu veloce delle funzioni ricorsive con return….</div><div><br></div><div>cfr: <a href="https://gist.github.com/3082523">https://gist.github.com/3082523</a></div><div><br></div><div>sulla mia macchina, con generator:</div><div><br></div><div>0.0001380443573 seconds</div><div><br></div><div>con funzione ricorsiva:</div><div><br></div><div>0.908564090729 seconds</div><div><br></div><div><br></div><div>che come test fa un po schifo, ma rende l'idea</div><div><br></div><div>Fico! Grazie!</div><div><br></div><div>Davide</div><div><br></div><div><br></div><div><br></div><div><br><div><div>On Jul 10, 2012, at 11:41 AM, enrico franchi wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><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>
_______________________________________________<br>Python mailing list<br><a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>http://lists.python.it/mailman/listinfo/python<br></blockquote></div><br></div></div></body></html>