Generally speaking, most programs could be written in either Haskell or an imperative language without much trouble (assuming you&#x27;re comfortable with the language), though some problems are better suited to Haskell than others.<p>The way I see it, if you want to extend your language to be able to express solutions to your problem in terms that are close to your problem domain, then Haskell is probably a good choice.<p>If you would rather transform your problem into constructs that are easily understood in terms of the low-level operations performed by a computer, then you might be better off with a low-level imperative language.<p>To put it another way, if your requirements include things like deterministic real-time scheduling, strict performance or memory requirements, anything involving assembly language or cachelines, then you should probably use something like C or C++ or Rust.<p>On the other hand, if you don&#x27;t care about any of that and you just want your program to compute the right answer in a reasonable amount of time and you want to have high confidence that it&#x27;s right, then Haskell is a pretty good choice.