Many schools teach functional programming. Some of them even teach it first. I think MIT, for a long time, used to teach scheme in its introduction to computer programing classes.
At my school we covered ML as part of a "comparative programing languages class" that everyone was required to take.
In any case, I don't think functional programming is that difficult to learn for people coming from imperative languages. At least it wasn't for me.
A lot of people think the reason languages like Haskell and Scheme haven't gotten wider adoption is because people are "ruined" from them by imperative programming. That's nonsense.
The real reason those languages haven't seen wide adoption is because they don't use curly braces. Seriously.
The C/Algol syntax style is prevalent because people like the way it looks.
The key to increasing adoption of functional programing is not to talk about how great Haskell is and how evil side effects are, or to say the word "monad" repeatedly. Instead, just create a functional language that uses curly braces and semi-colons. People will use it.