import Data.Maybe maybeRead :: Read a => String -> Maybe a maybeRead s = case reads s of [(x,"")] -> Just x _ -> Nothing getListFromString :: String -> Maybe [Integer] getListFromString str = maybeRead $ "[" ++ str ++ "]" main :: IO () main = do putStrLn "Enter a list of numbers (separated by comma):" input <- getLine let maybeList = getListFromString input in case maybeList of Just l -> print (sum l) Nothing -> putStrLn "Bad format. Good Bye."