>As you alluded, stateful operations [1] won't work at all in your Haskell model.
Couldn't you just parametrize over IO/ST/etc.? E.g. something like
IO r -> a -> IO r
I don't have a great mental model of transducers yet, so I'm not confident about that.