I'm a Haskell and XMonad beginner. I'm trying to set up my tiling layout to allow three side by side columns (so that I can have three simultaneous tall and thin Vim instances for coding, per workspace).

In the docs, I've found a three-column layout function, and even managed to import it and define a custom layout, but I'm not sure how to add it to my layoutHook, which already has some stuff defined from a tutorial I read, to keep my xmobar safe from window covering.

This also has avoidStruts, which seems to be what you want when you say you want to keep the existing config. smartBorders is another nice thing that hides the border when not needed, for example when you have only one window on one screen.