I've gotten good enough at Haskell to realize there's a problem in paradigms.
There's really two types of useful programming languages and approaches.
1. Correctness. That's Haskell. The downside of correctness is that in Haskell this often means you have to exactly what to expect at all times and know about every possible edge case. This isn't in the sense of "logical edgecase broke my code," no this is about code flexibility.
(thread continued...)
2. Hackability. Hackable paradigms are the most flexible, they allow you to do anything, to whatever, however you want. It makes it easy to tweak and tinker with any component, because there are no real expectations on exactness or validity laid out before you. For this same reason it's harder to maintain, easier to break, more prone to bugs, but it's much easier to extend and quickly work with.
(continued...)