Есть ли веская причина, по которой тип 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
инстансов? Я ожидаю, что ответ будет аналогичен ответам на эти и связанные с ними вопросы.