This is interesting, but it's still missing some very important features of transducers. As you alluded, stateful operations [1] won't work at all in your Haskell model. Also, you've missed early termination [2], which Rich's talk [3] covered well.
[1] https://github.com/clojure/clojure/blob/b01adb859c66322c5cff...
[2] https://github.com/clojure/clojure/blob/b01adb859c66322c5cff...