From 7d95a3730c81e6c0c52f005d828d2ca5f6be2b10 Mon Sep 17 00:00:00 2001 From: Rnhmjoj Date: Thu, 8 Jan 2015 00:28:44 +0100 Subject: [PATCH] replace m >>= return . f with fmap f m --- main.hs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/main.hs b/main.hs index 21b9f0c..aa64d0a 100644 --- a/main.hs +++ b/main.hs @@ -17,14 +17,15 @@ data ProgArgs = ProgArgs } deriving (Show) parser :: IO (ParserSpec ProgArgs) -parser = path >>= \path -> return $ ProgArgs +parser = (\path -> ProgArgs `parsedBy` boolFlag "interactive" `Descr` "Manually insert numbers" `andBy` optFlag path "dictionary" `Descr` "Specify dictionary file path" `andBy` optFlag 6 "lenght" `Descr` "Number of words in a passphrase" - `andBy` optFlag 1 "phrases" `Descr` "Number of passphrases to generate" + `andBy` optFlag 1 "phrases" `Descr` "Number of passphrases to generate") + <$> path interface :: IO (CmdLnInterface ProgArgs) -interface = +interface = (`setAppDescr` "A diceware passphrase generator") <$> (`setAppEpilog` "Alea iacta est.") <$> (mkApp =<< parser) @@ -39,7 +40,7 @@ path = getDataFileName "dict/diceware" -- Read dictionary file readDict :: ProgArgs -> IO ProgArgs readDict args@ProgArgs{..} = - readFile dictionary >>= \x -> return args {dictionary = x} + (\x -> args {dictionary = x}) <$> readFile dictionary -- Main function exec :: ProgArgs -> IO () @@ -47,8 +48,8 @@ exec args@ProgArgs{..} = if interactive then interact (unlines . map dice . lines) else do - randWords dictSize phraseLength >>= putStrLn . unwords . map dice' - when (phrases > 1) $ exec args {phrases = phrases - 1} + randWords dictSize phraseLength >>= putStrLn . unwords . map dice' + when (phrases > 1) $ exec args {phrases = phrases - 1} where (dict, dictSize) = (parseDiceware dictionary, length dict) dice n = readDiceware dict (read n :: Int)