My Haskell is a bit rusty, but I think the Haskell example could improve A LOT by using monad transformers or a free monad?
I understood the only purpose of writing the Haskell was didactic, and to improve his F# code. It seems that moving further from constructs in F# would work against this.