Чи є вагома причина, чому саме тип Prelude.read є
read :: Read a => String -> a
а не повертати Maybeзначення?
read :: Read a => String -> Maybe a
Оскільки рядок може не бути синтаксичним Haskell, чи не остання буде більш природною?
Або навіть an Either String a, де Leftміститиметься початковий рядок, якби він не розбирав, а Rightрезультат, якби?
Редагувати:
Я не намагаюся змусити інших писати відповідну обгортку для мене. Просто шукаю запевнити, що це безпечно зробити.
readMaybeфункція буде додана незабаром.
takeбути Integral n => n -> [a] -> [a]?
takeприймає жодногоNum a => a? Чому існує спеціальний випадокfmapдля списків? Чому цеFunctorне потрібно дляMonadекземплярів? Я очікую, що відповідь буде подібною до відповідей на ці та пов’язані з цим питання.