FP is based on lamdba calculus. You need to know that. Its a good starting point. Functions are everything. There is no concept of state (although you can fake it at a higher level).
is accepted. Not so in FP. You just can't assign the variable an another value.
If you want to learn FP for the long-term, learn Haskell. It's the most purest version of FP out there and its quite complicated too (I have just started learning it) but still worth learning it.
An Introduction to Functional Programming gives you a high level overview of what FP is all about.
Two caveats though
- If you want to learn FP for jobs, then there aren't too much vacancies out there. Procedural and OOP still rules the job market. But FP can help you a lot in exploring new ways of solving a problem.
- FP compilers aren't blazingly quick. Since FP is more concerned with solving the problem, you can't expect C speed. But still you can issue instructions to compiler(in Haskell) to speed up the execution process. The trade-off is you get a lot of time focusing on the program in hand rather than fire-fighting bugs.