You just use the "three section laws" to do this,
(a `op` b) = (a `op`) b = (`op` b) a = op ab
so that
import Control.Arrow maxmin ab = (max a) . (min b) = (.) (max a) (min b) = uncurry (.) (max a, min b) = uncurry (.) . (max *** min) $ (a, b) = curry (uncurry (.) . (max *** min)) ab
which also cannot be read. :)
source share