At the moment arrow commands re-use
HsExpr for Proc expressions. But with Dan Winograd-Cort I concluded that the best thing by far would be to separate the data type of
HsExpr from that of arrow commands. I think that would lead to a substantial tidy up.
There is also a nasty lurking bug in the type checking of commands; see line 290 of
TcArrows. Here we call the unifier, but do not do anything with the coercion it returns. This is plainly wrong and will bite eventually. But I don't understand this code well enough to fix it.
In short, I am not confident of the arrows implementation at the moment.
Several tickets are blocked on this