Various ways of shuffling input and output components. Function types are mostly autogenerated.

# Documentation

arrAssocRtoL :: Arrow a => a (t, (t1, t2)) (t4, (t5, t3)) -> a ((t, t1), t2) ((t4, t5), t3)Source

arrAssocLtoR :: Arrow a => a ((t1, t2), t) ((t3, t4), t5) -> a (t1, (t2, t)) (t3, (t4, t5))Source

arrCancelUnitFst :: Arrow a => a (b, ()) (d, ()) -> a b dSource

arrCancelUnitSnd :: Arrow a => a ((), b) (d, ()) -> a b dSource