diff options
Diffstat (limited to 'Main.hs')
-rw-r--r-- | Main.hs | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/Main.hs b/Main.hs deleted file mode 100644 index e8b2927..0000000 --- a/Main.hs +++ /dev/null @@ -1,69 +0,0 @@ -import Math -import System.Environment -import Data.List -import Text.Printf - -errorMessage :: String -> String - -errorMessage "" = "nd v1\nUsage: nd [-help, -int, -prime, -factor, -hcf]\n" -errorMessage reason = "nd v1\nFAILURE: " - ++ reason - ++ "\nUsage: nd [-int, -prime, -factor, -hcf]\n" - -flagHandlerF :: [String] -> Int -> String -> ([String] -> String) -> String - -flagHandlerF args (-1) error fmessage = - if (length args) == 0 - then error - else - (fmessage args) - -flagHandlerF args nargs error fmessage = - if (length args) /= nargs - then error - else - (fmessage args) - -flagHandler :: String -> [String] -> String - -flagHandler "-prime" args = - flagHandlerF args (-1) - (errorMessage "-prime requires at least one integer argument") - (\args -> - foldl (++) "" [show y ++ ": isPrime=" ++ (show $ isPrime y) - ++ "\n" | x <- args, let y = (read x) :: Int]) - -flagHandler "-factor" args = - flagHandlerF args (-1) - (errorMessage "-factor requires at least one integer argument") - (\args -> - foldl (++) "" [show y ++ ": factors=" ++ show (factors $ y) - | x <- args, let y = (read x) :: Int]) - -flagHandler "-int" args = - flagHandlerF args (-1) - (errorMessage "-int requires at least one integer argument") - (\args -> - foldl (++) "" [show y ++ ": (isPrime=" ++ (show $ isPrime y) - ++ ", factors=" ++ (show $ factors y) - ++ ")\n" | x <- args, let y = (read x) :: Int]) - -flagHandler "-hcf" args = - flagHandlerF args (2) - (errorMessage "-hcf requires two integer arguments") - (\args -> - let n = (read $ head args) :: Int - m = (read $ head $ tail args) :: Int - hcf = head $ reverse $ intersect (factors n) (factors m) in - "hcf(" ++ show n ++ ", " ++ show m ++ "): hcf=" ++ show hcf) - -flagHandler _ _ = - errorMessage "Flag not recognised" - - -main = do - args <- getArgs - putStr $ - case args of - [] -> errorMessage "" - (x: xs) -> if x == "-help" then errorMessage "" else flagHandler x xs |