<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im"><br>
>>>> print list(flatmap([1, 2, 3, 4, 5], lambda x: x + 1))<br>
> Traceback (most recent call last): File "<stdin>", line 1, in<br>
> <module> File "<stdin>", line 3, in flatmap TypeError: 'int' object<br>
> is not iterable<br>
><br>
<br>
</div>Si, perch│ per "contratto" la funzione chiamata deve restituire una<br>
sequenza.<br>
<br>
Comunque non sono sicuro di capire cosa intendi con "lista di<br>
partenza": │ quella che passi come primo argomento a flatmap?<br></blockquote><div><br></div><div>Si', [1, 2, 3, 4, 5]</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
In questo caso, non │ il motivo per cui la funzione fallisce.<br>
<br>
La versione in Scala funziona in entrambi questi casi:<br>
<div class="im"><br>
flatmap([1, 2, 3, 4, 5], lambda x: x + 1))<br>
flatmap([1, 2, 3, 4, 5], lambda x: [x + 1))<br>
<br>
</div>?<br>
<br></blockquote><div><br></div><div>Ho toppato e alla grande: il comportamento di Scala e' identico a Python (con un messaggio d'errore che e' tutto un programma, te lo risparmio). E' Ruby quello con cui puoi fare flatmap su una collezione gia' piatta e non si imbufalisce.</div>
<div>Ovvero:</div><div><br></div><div><div>irb(main):001:0> a = [1, 2, 3, 4, 5]</div><div>=> [1, 2, 3, 4, 5]</div><div>irb(main):002:0> a.flat_map{|x| x + 1}</div><div>=> [2, 3, 4, 5, 6]</div><div>irb(main):003:0> a.flat_map{|x| [x + 1]}</div>
<div>=> [2, 3, 4, 5, 6]</div><div>irb(main):004:0> </div></div><div><br></div><div>Questo proprio perche' la flatmap di Ruby e' analoga a fare una map, seguita da una flatten.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
E' facile modificare la funzione in modo da funzionare in ogni caso,<br>
ma non mi sembra una buona idea.<br></blockquote><div><br></div><div>Ok.</div><div><br></div><div>Ciao,</div><div>Giuliano</div><div><br></div><div><br></div></div><div><br></div>-- <br>Piergiuliano Bossi<br>Blog: <a href="http://thinkingbox.wordpress.com/" target="_blank">http://thinkingbox.wordpress.com/</a><br>
Twitter: <a href="http://twitter.com/thinkingbox" target="_blank">http://twitter.com/thinkingbox</a> (English)<br>Twitter: <a href="http://twitter.com/scatolapensante" target="_blank">http://twitter.com/scatolapensante</a> (Italiano)<br>
<div>Google+: <a href="https://plus.google.com/u/0/108187981162465525118" target="_blank">https://plus.google.com/u/0/108187981162465525118</a></div>
</div></div>