{-# LANGUAGE Arrows #-} foo0 f g x y = proc _ -> (|f (g -< (x, y))|) foo1 f g h x = proc (y, z) -> (|test (h f . (h g) -< (y x) . y z) ((h g) . h f -< y z . (y x))|) foo2 f g h x = proc (y, z) -> (| test ( h f . h g -< y x . y z ) ( h g . h f -< y z . y x ) |) bar0 f g x y = proc _ -> f -< x &&& g -< y bar1 f g h x = proc (y, z) -> h f . (h g) -< (y x) . y z ||| (h g) . h f -< y z . (y x) bar2 f g h x = proc (y, z) -> (h f . h g) -< (y x) . y z ||| (h g . h f) -< y z . (y x)