Outer product on functions

Here's our outer product definition:

outer f x y = fmap (\a -> fmap (f a) y) x

If x and y are functions, we can replace fmap with . to obtain:

outer f g h = (\a -> (f a) . h) . g

Applying to arguments now gives:

((outer f) g h) x y = ((\a -> (f a) . h) . g) x y
                    = (\a -> (f a) . h) (g x) y
                    = ((f (g x)) . h) y
                    = f (g x) (h y)