Monad.
Since I was at first learning by myself, I tried a lot of languages. I tried Haskell too, but Monad is very abstract. Sometimes people say it's in jQuery, sometimes people say it's in Promise, sometimes call it flatMap, sometimes in Category Theory. They are very confusing words. And Monad is never something so real that we can learn from the real world.
I read tens of posts on it after I read the guide(Learn you a Haskell). And years after I read the guide again and began to know it's a structure for computation defined with abstract data types that is common used. Turned out to be simple, it's from Math. However, took me so much time to understand the abstraction from so many facts I see during the years.
And even I have known it, I still can't write code very easily with it.