A Haskell outer product

outer :: (a->b->c) -> [a] -> [b] -> [[c]]
λ> let outer f xs ys = map (\x -> map (f x) ys) xs
λ> outer (*) [1,2,3] [1,2,3]
[[1,2,3],[2,4,6],[3,6,9]]
λ> outer (^^) (map ((1+).(/100)) [3,5,7]) [1,2,3,4]
[[1.03,1.0609,1.092727,1.12550881],[1.05,1.1025,1.157625...

Not so different from APL's outer product on lists:

      (1 + 100 ÷ 3 5 7)  ∘.*  1+⍳4
1.03 1.0609 1.092727 1.12550881
1.05 1.1025 1.157625 1.21550625
1.07 1.1449 1.225043 1.31079601