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