Although, I'm pretty sure this use of tuples is inconsistent with what's in the Applicatives paper. It'd be: [| (,) (g x y) (h (g x y))) |] [| id f (g x y) (h [| (,) (g x y)) |] |] I think that's the legit way to write it. The transformation is pretty trivial.