
On 2015-02-13 13:00, Zongzhe Yuan wrote:
i meet a problem when i was using readLn to read a int from user
my function is like that
do (some thing else that is working) n <- readLn (some thing else) f n x1 x2 x3 ……
f has the type of Int -> something else because the type in this function is fixed, if the type of n is not Int, it will have exception However i want to detect whether the user input is valid or not
[..]
How could i solve this problem?
readLn is a bit harsh when it comes to error reporting. You could use getLine to read a string and then use readMaybe (in Text.Read) to see whether it's a valid integer. Like: main = do s <- getLine case readMaybe s :: Maybe Int of Just i -> f i Nothing -> putStrLn "Ouch!" -- Frerich Raabe - raabe@froglogic.com www.froglogic.com - Multi-Platform GUI Testing