{-# LANGUAGE Arrows #-}
foo f =proc a -> case  a  of Left b -> f -<b

bar f g h j
  = proc a ->
    case a of
        Left (
            (a, b),
            (c, d)
         ) -> f (a <> c) -< b <> d

        Right
          (Left a) ->
            h -< a
        Right
          (Right b) ->
            j -< b


baz = proc x -> (f -< x) `catchA`  \case
                    Right a -> f -< a
                    Left e  -> h -< e
