Why (not) Haskell?
I spent most of my time writing Python and Rust, but I still reach for Haskell from time to time. (Like most people, I use GHC, the most featureful implementation.) Here's my rubric; maybe you'll find it helpful:
Reasons to use Haskell
Domain modeling - there's not much separating model from implementation. Algebraic data types, pure and total functions, powerful type system - these make it easy to sketch your domain and seamlessly extend it in real programs.
Incredible concurrency primitives. STM (Software Transactional Memory) lets you layer
database-like transactions over any part of your program with little fuss. GHC has cheap killable
threads too, with carefully considered async exceptions (though you must choose your primitives
judiciously).
Powerful and succinct code generation through typeclass deriving. There are several mechanisms
by which GHC can implement classes for you: built-in (stock), deferring to wrapped types
(newtype), deferring to default implementations (anyclass), or controlled
through another type (via). Generic deriving lets you implement anything abstractly
over algebraic data types. You can go far without having to write your own instances of Eq, Ord, Show,
Hashable, Functor, Foldable, or Traversable!
Understanding the practical aspects of the categorical junk (Functor, Applicative, Monad) will
help you work in languages like Lean or Rocq.
Reasons to avoid Haskell
Lazy evaluation makes it hard to predict performance. I can't always keep straight what gets demanded when. Most of the time it doesn't matter, and there are patterns to follow, but sometimes you get surprised.
Cross-compiling or creating static binaries can be complicated. stack or nix can be helpful here,
but it's not as idiot-proof as cargo.
There's a low-latency garbage collector, but it's not nothing. You would notice the stutter in realtime applications.
Programs that are a good fit for Haskell
Anything that has a finite lifetime and moderate resource requirements is easily handled. It just takes more care to do long-running and data-intensive things. In general, it's pretty easy to beat Python on performance without trying.
Compilers are a great fit - Parser combinators and generators are well-supported, and there is great support for generic programming with algebraic patterns.