It is known that all functional languages share some basic properties like using functions as basic building block for programs with all the consequences like using recursion in
Fundamental properties?
The first is beautiful, the second is an ugly side-effect of the former (pun intended).
The real-world compensation for lack-of-state is what I find to be the biggest differentiator between functional languages.
Those few things give lots of freebies. Most of the time, languages handle memoization.