There is something really elegant about #Haskell, and its isolation of "pure" functions (which can't perform I/O) from impure functions, as well as general data immutability, make for nice designs that are easy to reason about, and excellent recursion handling also feeds into that.
That said, memory usage in Haskell can be hard to reason about, and Rust gives some of those guarantees with its "mut" keyword.
I do a lot of systems programming, so would mostly go for Rust these days.