I guess technically Haskell has this feature too, but it's more in the vein of contorting impurity into an type system to thread the state of the world as a parameter throughout our code, and then modeling it using a mechanism so abstract it defies the intuition of most programmers. Seems a lot simpler just to provide an out to deal with the real world, but then track it when you do