Lifting embeds an action from an underlying monad into the surrounding transformed monad. In a StateT Board IO stack, lift adapts IO actions so they can run inside StateT. section 7.2.3
Minesweeper board actions
A revealCell action reads and updates the board with get and put, while lifting putStrLn prints status messages. The resulting type is lift :: IO a -> StateT Board IO a. section 7.2.3
Long stacks demonstrate the technique, but combining state into one StateT may offer greater simplicity, convenience, and clarity. section 7.2.3

