Flatten a list: Difference between revisions

Content added Content deleted
(→‎Python: Added a variant illustrating non-recursive use of concatMap, avoiding mutation and error-based flow)
Line 2,098: Line 2,098:
flattenList(nestList, flatList)
flattenList(nestList, flatList)
println("Flattened : " + flatList)
println("Flattened : " + flatList)
}</lang>

Or, using a more functional approach:

<lang scala>
fun flatten(list: List<*>): List<*> {
fun flattenElement(elem: Any?): Iterable<*> {
return if (elem is List<*>)
if (elem.isEmpty()) elem
else flattenElement(elem.first()) + flattenElement(elem.drop(1))
else listOf(elem)
}
return list.flatMap { elem -> flattenElement(elem) }
}</lang>
}</lang>