
I'm trying to write a function that asks for a workspace name, then sends the current window there and views it. Like these: carryToNext = shiftTo Next NonEmptyWS >> moveToNext carryToPrev = shiftTo Prev NonEmptyWS >> moveToPrev except with a specific workspace. I've got it almost working, but it asks for the workspace twice: carryToSpecific = withWorkspace myXPConfig (windows . W.shift) >> withWorkspace myXPConfig (windows . W.greedyView) There should be some simple way to combine the two, but I'm not sure how to go about finding it. A few things I've tried: carryToSpecific = withWorkspace myXPConfig ((windows . W.shift) >> (windows . W.greedyView)) carryToSpecific = withWorkspace myXPConfig (windows . (W.shift >> W.greedyView)) carryToSpecific = map (withWorkspace myXPConfig) [(windows . W.shift), (windows . W.greedyView)] carryToSpecific = do ws <- withWorkspace myXPConfig return ws $ windows . W.shift ws $ windows . W.greedyView return () What's the proper way? Thanks Jeff