В недавнем ответе на вопрос стиля я написал
main = untilM (isCorrect 42) (read `liftM` getLine)
и
isCorrect num guess =
case compare num guess of
EQ -> putStrLn "You Win!" >> return True
...
Martijn предлагаемые альтернативы:
main = untilM (isCorrect 42) (read <$> getLine)
EQ -> True <$ putStrLn "You Win!"
Какие общие шаблоны в коде Haskell можно сделать более ясными, используя абстракции из Control.Applicative? Какие полезные правила нужно иметь в виду для эффективного использования Control.Applicative?