<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2015-07-24 18:11 GMT+01:00 Nadir Sampaoli <span dir="ltr"><<a href="mailto:nadirsampaoli@gmail.com" target="_blank">nadirsampaoli@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Ecco, una cosa che cambierei in python è la semantica del corpo della funzione, come espressione invece che come statement (vedi rust/haskell/ruby/ecc). </p></blockquote><div>Per fare questo devi stravolgere il linguaggio. In pratica devi fare scomparire il concetto di statement. Che va bene.</div><div>Pero' poi devi accettare:</div><div><br></div><div>if a = 3:</div><div> print a</div><div><br></div><div>cosa sara' a?</div><div><br></div><div>Oh, volendo puoi fare stravolgimenti della grammatica per fare funzionare comunque come si vuole... ma in generale se vai in direzione del "tutto e' un'espressione, ci vai fino in fondo."</div><div><br></div><div>Comunque la "semantica del corpo della funzione" (che non mi e' chiaro cosa intendi) non sembra a prima vista il problema.</div><div><br></div><div>Diciamo che per poter dire che "return e' obbligatorio" (che risolverebbe il problema di cui sopra) devi essere in grado di dimostrare staticamente che ogni path di esecuzione incontra un return. Che probabilmente non e' eccessivamente complicato da fare.</div><div><br></div><div>E ovviamente avresti un botto di funzioni che finiscono con return None. Oggettivamente non e' che mi piace troppo... pero' va bene cosi'.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Il null implicito fa molto php.</p></blockquote><div>I linguaggi che menzioni .. a parte che per certi versi Rust non fa una cosa troppo diversa da Python. Se non metti return, lui ritorna (). Dopo di che il fatto che sia staticamente tipizzato mi fa anche pensare che se provi ad usare () per assegnarlo a qualcosa che non dovrebbe avere quel tipo intervenga.</div><div><br></div><div>Per il resto, gli altri linguaggi che menzioni di fatto hanno altre convenzioni: per esempio che l'ultima espressione che compare e' quella che viene ritornata. La cosa e' relativamente ovvia e poco sorprendente nei linguaggi "veramente" funzionali. E una volta che hai static typing, anche la gamma di errori che puo' causare cala moltissimo. In Ruby? Non cosi' intuitivo, dal mio punto di vista. Fra le due, preferisco il None implicito rispetto che "quello che e' ultimo implicito".</div><div><br></div></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"> .<br>..: -enrico-</div>
</div></div>