вводимая строка допустимым значением перечисления?
А потом весь оставшийся main в ветке кейса (вместо ...) писать? Это не очень красиво, мне кажется. Хотя readLn без дружественного к пользователю сообщения об ошибке, как предложили выше, мне тоже не нравится — это другая крайность. Я делаю что-то в духе: color <- case reads colorStr of [(color, rest)] -> return color _ -> putStrLn errMsgWrongColor >> exitFailure
Тут нужно матчить с [(color, "")] тогда уж
Обсуждают сегодня