To map over (\x y -> do print x; putStrLn y):

map (\x -> foo x "my string argument")
map (flip foo "my string argument")

-- < jle`> if you can re-write foo to take the string arugment first, it's even simpler
map (foo "my string argument") [1..10]

-- < MarcelineVQ> if that's inconvenient you can also section it:  
map (`foo`"my string argument") [1..10]

23:21 < jmnoz> so it's a good idea to keep possible mapping in mind when setting the argument order (designing the function) then?
23:23 < jle`> jmnoz: actually, yes :)
23:23 < jle`> a lot of people choose argument orders based on what they expect to partially apply

23:23 < jmnoz> hmm also do you use map/fmap interchangeably?
23:23 < jle`> i usually use map for lists, it tends to be slightly more readable
23:23 < jle`> and it can help with error messages sometimes