doAddCard :: String -> String -> Maybe String -> Deck -> Kerchief ()
doAddCard front back soundUrl deck = do
    card <- io $ newCard front back soundUrl
    putStrLn "Card added."

    let deck' = addCard card deck
    askYesNo "Add reverse card as well? (y/n) "
             (return $ addCard (reverseCard card) deck') -- Either add two cards to the deck...
             (return                              deck') -- ...or only one
        >>= setDeck
doAddCard :: String -> String -> Maybe String -> Deck -> Kerchief ()
doAddCard front back soundUrl deck = do
    card <- io $ newCard front back soundUrl
    putStrLn "Card added."

    let deck' = addCard card deck
    askYesNo "Add reverse card as well? (y/n) "
             (return $ addCard (reverseCard card) deck') -- Either add two cards to the deck...
             (return                              deck') -- ...or only one
        >>= setDeck
doAddCard front back soundUrl deck = do
    card <- io $ newCard front back soundUrl
    putStrLn "Card added."

    let deck' = addCard card deck
    askYesNo "Add reverse card as well? (y/n) "
             (return $ addCard (reverseCard card) deck') -- Either add two cards to the deck...
             (return                              deck') -- ...or only one
        >>= setDeck