_.person.freinds[0].name
Hides some complicated dark magic but in reality it's really simple. It all boils down to function composition, let me explain...
(A => A) => (S => S)
It takes a function acting on a 'thing' (A) and turns it into a function acting on a 'bigger thing' (S)
(String => String) => (Person => Person)
(Person => Person) => (Contact => Contact)
and
(String => String) => (Person => Person)
The 2 functions compose to give a
(String => String) => (Contact => Contact)
(A => F<B>) (S => F<T>)
They are still composables. But now we get additional power by the 'mapper' F. Here is where the intersting stuff comes in
P<A,B> => P<S,T>
The fancy wrapper P is called a Profunctor!