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