Итак, я хочу переписать данную функцию prog
, используя >>
/ >>=
привязок вместо do
и <-
:
prog :: IO Int
prog =
do putStrLn "Hello there! How old are you?"
age <- (readLn :: IO Int)
let agedays = show $ age * 365
putStrLn $ "So you are at least than " ++ agedays ++ " days old."
return (read agedays)
Переписывать более простые функции непроблема для меня, но readLn :: IO Int
вызывает у меня головную боль ...
Мое предложение было:
prog :: IO Int
prog =
putStrLn "Hello there!How old are you?" >>
readLn::IO >>=
let agedays = \age -> show $ age * 365 >>
putStrLn $ "So you are at least than " ++ agedays ++ " days old."
Однако это просто не работает, так как есть проблема спривязка readLn :: IO
к следующей анонимной функции \age
.Любая помощь?