From 31d83323c88592210fc460090688f5f89737eb71 Mon Sep 17 00:00:00 2001 From: Joscha Date: Thu, 20 Sep 2018 23:38:05 +0000 Subject: [PATCH] Choose word length with command line argument --- app/Main.hs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/app/Main.hs b/app/Main.hs index bf37463..72fd5f8 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -140,11 +140,11 @@ loop = do runLoop :: GuessState -> IO GuessState runLoop = execStateT (H.runInputT H.defaultSettings loop) -loadAndRun :: [FilePath] -> IO () -loadAndRun files = do +loadAndRun :: Int -> [FilePath] -> IO () +loadAndRun n files = do wordlists <- mapM readFile files let wordlist = concatMap lines wordlists - cmap = buildClassMap (Just 5) wordlist + cmap = buildClassMap (Just n) wordlist g = guessState cmap let wordCount = numberjust $ show $ length wordlist @@ -179,13 +179,19 @@ loadAndRun file = do -- - quit -> quit the program (alias: q) -} +wrongArgs :: IO () +wrongArgs = do + name <- getProgName + putStrLn " USAGE:" + putStrLn $ name ++ " " + die "Error: No word length or dictionary given." + main :: IO () main = do args <- getArgs case args of - [] -> do - name <- getProgName - putStrLn " USAGE:" - putStrLn $ name ++ " " - die "Error: No dictionary given." - files -> loadAndRun files + [] -> wrongArgs + [_] -> wrongArgs + (n:files) -> case readMaybe n of + Nothing -> wrongArgs + Just number -> loadAndRun number files