# flatmap

Robert Virding <>
Mon Feb 27 14:17:32 CET 2006

```No, it should say append! Flatten/1 works recursively to completely
flatten an term while append/1 only does it at the top level.

Flatmap/2 should only flatten the top level, each call to Function
returns a list of elements and flatmap doesn't return a list of lists,
just a list of elements. If that makes sense? :-)

So while

map(F,L) -> [[1,2,3],[4,5,6],[7,8,9]]

then

flatmap(F,L) -> [1,2,3,4,5,6,7,8,9]

If I remember correctly.

The types don't really say much though, perhaps they should be:

Function = fun (A) -> [B]
List1 = [A]
Element = [B]

/Robert

Mats Cronqvist skrev:
>   happended upon the description of lists:flatmap/2 (that i've never
> used), and was a bit mystified by the append/1 function used in the
> description. could it be that it should say flatten/1 ?
>
>   mats
>
> flatmap(Function, List1) -> Element
> Types:
> Function = fun(A) -> B
> List1 = [A]
> Element = [B]
>
> flatmap behaves as if it had been defined as follows:
>
> flatmap(Func, List) ->
>     append(map(Func, List))
>

```