move :: MonadBooks m => Text -> Text -> m ()
move q lname = do
    b <- allBooks >>= query1 q
    -- Try to move into an existing section before creating a new one.
    section <- findSection lname `catchError`
               (const . return $ Other lname)
    modify $ Set.insert (b { bookSection = section })
           . Set.delete  b
    putLn [st|Moved #{formatBook b} to #{show section}|]
move :: MonadBooks m => Text -> Text -> m ()
move q lname = do
    b <- allBooks >>= query1 q
    -- Try to move into an existing section before creating a new one.
    section <- findSection lname `catchError`
               (const . return $ Other lname)
    modify $ Set.insert (b { bookSection = section })
           . Set.delete  b
    putLn [st|Moved #{formatBook b} to #{show section}|]
move q lname = do
    b <- allBooks >>= query1 q
    -- Try to move into an existing section before creating a new one.
    section <- findSection lname `catchError`
               (const . return $ Other lname)
    modify $ Set.insert (b { bookSection = section })
           . Set.delete  b
    putLn [st|Moved #{formatBook b} to #{show section}|]