No, the problem is that IO
actions can't be printed. See, you've only constructed a list of actions, rather than running them.
Try this instead:
addTables xs = sequence [run conn x [] | x <- xs]
or, equivalently:
addTables xs = mapM (\x -> run conn x []) xs
If you don't care about the results, mapM_
is slightly more efficient.