What parent describes is what most (all?) tiling window managers do. However, XMonad's default is really weird. Instead of each desktop having their own set of workspaces, there is a single set of workspaces shared by all desktops. If you try to switch desktop A to the workspace currently shown by desktop B, then B will switch to the one currently shown by desktop A.
There is a module to get the more 'normal' behaviour of each desktop having its own set of workspaces, but it can be a bit difficult to set up if you are not familar with Haskell.
See I think xmonad's behaviour makes intuitive sense and all the others are weird. If I want to see my Slack window on the monitor in front of my face I don't have to worry about remembering what monitor it was last on, I just call up workspace 3 and bam it's there.
There is a module to get the more 'normal' behaviour of each desktop having its own set of workspaces, but it can be a bit difficult to set up if you are not familar with Haskell.