Functional programming is based on function not on objects.
key ideas.
everything can be describes as a function. (mathematical functions)
functional programming should not access global state from within the function body (no references or pointers)
functions are first class citizens so you can pass a function to another function as parameter
There are however pure and impure functional languages en.wikipedia.org/wiki/Purely_functional_programmi…
These mutations of state are often referred as side-effects. like accessing the database or streaming a file. in haskell for example that's what the IO-monad is for.
fpcomplete.com/blog/2017/04/pure-functional-progr…
maybe as a starting point.