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)