{-# LANGUAGE Arrows #-}

foo x = proc (y, z) -> do
    (|
        bar
            (bindA -< y)
        |)

foo1 x = proc (y, z) -> do
    (|
        bar
            (bindA -< y)
        |)
        z

foo2 = proc () -> do
    ( proc () ->
            returnA -< ()
        )
        -<
            ()
