As of my understanding both monadic operations should be equally expressive:
(^2) >>= (\x -> if x == 4 then \_ -> [] else (+1) >>= (\y -> negate >>= (\z env -> [x, y, z, env]))) $ 2
-- ^^
join (((\x -> if x == 4 then \_ _ _ -> [] else \y z env -> [x, y, env, z]) <$> (^2)) <*> (+1)) <*> (negate) $ 2
-- ^^^^^^
(please feel free to indent the code above, since I don't know how to do it without breaking the syntax)
Both computations yield the same result [], however, they differ in that only the latter short circuits whereas the former has to go through the entire structure. This isn't a problem as long as the effect can be ignored and is thus kind of idempotent, which certainly doesn't hold for every possible instance.
I am probably using join incorrectly, but I cannot see how to obtain short circuiting with the applicaitve computation. It seems as if short circuit semantics arises from the nested structure of monadic computations.