One of the big challenges you might face when learning a language like Haskell which favors immutability or purity is that suddenly all of the algorithms you once kept at your side have… well, by-and-large they’ve vanished. Many “imperative” algorithms rely upon mutable memory to work and it can be a challenge to remove that dependency. Usually in the process you’ll learn quite a bit about purely