This is a modified version of Ross Paterson's arrow preprocessor. It generalizes the product type for environments so that the arrow sugar can be used also for arrow instances that use sums for environments. Example: stream processors and Fudgets.
This is an unpolished prototype implementation.
There is an abstract and slides from a talk about ProdArrows. The slides come in two versions:
Feedback is welcome!