readDeck :: String -> Kerchief (Maybe Deck)
readDeck name = getDecksDir
    >>= io . catchNothing . fmap (eitherToMaybe . decode) . BS.readFile . (</> name)
    >>= maybe (return Nothing) (fmap Just . io . updateDeck)
readDeck :: String -> Kerchief (Maybe Deck)
readDeck name = getDecksDir
    >>= io . catchNothing . fmap (eitherToMaybe . decode) . BS.readFile . (</> name)
    >>= maybe (return Nothing) (fmap Just . io . updateDeck)
readDeck name = getDecksDir
    >>= io . catchNothing . fmap (eitherToMaybe . decode) . BS.readFile . (</> name)
    >>= maybe (return Nothing) (fmap Just . io . updateDeck)