<div dir="ltr"><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">So I was playing around with Sequences, and I came across a problem I haven&#39;t been able to solve in a decent way. I’ve reduced it to a simpler example here:<br>let array : [Int] = [1, 2, 3]<br>let mapArray = array.map { $0 }<br>let flatArray = mapArray.flatten() // Error!<br>This last line of code prints the following error:<br>let flatArray = mapArray.flatten() // Error!<br>                ^~~~~~~~<br></blockquote><div><br></div><div>There are two problems here, but neither is an ambiguous method reference. One problem is in the compiler: it&#39;s giving a less-than-helpful error message. The other problem is in your code: your mapArray is an Array&lt;Int&gt;, and Int isn&#39;t a SequenceType. All of the candidate flatten methods require the sequence element type (in this case, Int) to be at least a SequenceType. That is, flatten only works on a sequence of sequences.</div><div><br></div><div>This works:</div><div><br></div><div>let array: [Int] = [1, 2, 3]</div><div>let mapArray = array.map { [ $0 ] }</div><div>// Note that the closure above returns Array&lt;Int&gt;, not just Int.</div><div>// Therefore mapArray is Array&lt;Array&lt;Int&gt;&gt;.</div><div>let flatArray = mapArray.flatten()</div><div><br></div></div>