Concerning Haskel it still lacks some pragmatism to solve some pratical problems such as install and cabal hell.
EDIT: cabal came from industry and was based on ideas from the Java, Python, Ruby communities. The Nix packager better embodies the ideas of Haskell.
I'd argue stack pretty much solves those:
For non majors it's usually so you have enough to be "well rounded" or more importantly (with say english or math) you have enough facility in a field that you can use it's tools to further your work in your own field.
Python might not particularly add much over Scheme for the first situation, but if schools wanted to follow Dijkstra's conception of CS students wouldn't end up touching a computer until senior year let alone Scheme|Python|Pascal|Whatevs anyway and Python isn't distinctly worse for explaining bigO and data structures/algorithms (yes recursion support sucks a bit but not so much that you can't teach it to freshman); Python does however aid in the second tremendously because when students leave CS110 152|whatevs they will go back to their primary field and not have to muddle about learning a new language.
Yes computer science IS more than that. Which is why a B(S|A) in CS is a 4 year degree. SICP isn't a complete CS education either. That gluing code together is the typical software job is if anything an argument against Scheme/SICP.
By comparison, I think that the sicilib situation in Ruby ( a language that's fairly similar in Python in many characteristics) isn't really better than the Haskell one
As much as I like Haskell, design by committee is generally not something to be proud of. It's despite this that Haskell is good, not because of it.