Higher Kinded Types (Monads, Functors, etc.)

Very important to understand we are actually talking about discrete mathematics and higher algebra under the hood. Functional programming as a paradigm and a branch of discrete mathematics itself simply makes use of those fields in computer science.

The bottom line is, in terms of understanding, it's most likely the math involved rather than FP that doesn't click with one. If I'm wrong, a good idea would be to look up the mathematical definition of a functor; it might help in revealing the correlation between the shared code and your understanding of mathematics.