I read a really interesting Quora answer which corrects some myths surrounding functional programming. It’s well-worth a read.
Functional programming is awesome for GUIs. We just do them differently. We have a brand new paradigm for GUI code: functional reactive programming (FRP). FRP makes GUI code simpler, more modular and more declarative.
Another point Tikhon Jelvis makes is that with functional programming, you really abstract the order in which instructions are executed away from the developer. That cuts to the heart of why functional programming seems so mysterious to beginners. From day one of programming school, we’re taught the following definition
A computer program is a list of instructions that tell a computer what to do.
Implicit in that definition is that, as programmers, we tell a computer how to do what it does. With functional programming, you only tell the computer what to do, and never how to do it. That’s a fundamental change. It’s like, as Jelvis points out, starting to learn programming all over again.