import System.Exit isNameBlank :: String -> Bool isNameBlank "" = False isNameBlank _ = True isNameAction :: Bool -> IO () isNameAction True = return () isNameAction False = main listOfResponses :: String -> String listOfResponses x = case x of "good" -> "That's great! Glad you're doing well." "bad" -> "Aww! Hope you get better!" "alright" -> "okay! that's good you're doing alright" "okay" -> "oh, I see! that's good!" "ok" -> "oh, I see! that's good!" _ -> "Answer the question, NOW!!!" isResponseTrue :: String -> Bool isResponseTrue x = case x of "good" -> True "bad" -> True "alright" -> True "okay" -> True "ok" -> True _ -> False yesOrNoResponses :: String -> String yesOrNoResponses x = case x of "yes" -> "Alright!" "no" -> "Understandable. Have a good day!" _ -> "Answer. NOW!!!" wannaFinish :: String -> IO () wannaFinish "yes" = return () wannaFinish "no" = exitSuccess wannaFinish _ = main lastQuestion :: String -> String lastQuestion x = case x of "milanesa" -> "I love those! especailly for breakfast. In Diners they call them Chicken Fried Steak." "enchiladas" -> "Enchiladas. Those are good! drenched in sauce... It's tasty!!" "torta" -> "Can't beat a Torta! thats a sandwhich on steroids!!" "tacos" -> "gotta love some good street tacos!" "chile rellenos" -> "oh, man! You've gotten the good stuff! Chile Rellenos are the bomb!" _ -> "you FAILED!" lastQuestionTrue :: String -> Bool lastQuestionTrue x = case x of "milanesa" -> True "enchiladas" -> True "torta" -> True "tacos" -> True "chile rellenos" -> True _ -> False main :: IO () main = do putStrLn "Please enter your name." name <- getLine putStrLn $ "hello, " ++ name ++ "! how are you doing?" isNameAction $ isNameBlank name answerOne <- getLine putStrLn $ listOfResponses answerOne isNameAction $ isResponseTrue answerOne putStrLn $ "Hey, " ++ name ++ ", wanna eat something?" foodAnswer <- getLine putStrLn $ yesOrNoResponses foodAnswer wannaFinish foodAnswer putStrLn $ "Alright, " ++ name ++ ". What do you wish to eat? We got Milanesa, Enchiladas, a Torta , Tacos, or Chile Rellenos. pick!" pickYourFood <- getLine putStrLn $ lastQuestion pickYourFood isNameAction $ lastQuestionTrue pickYourFood putStrLn "Have a great day!~" exitSuccess