Есть ли веская причина, по которой Prelude.read имеет тип
read :: Read a => String -> a
вместо того, чтобы возвращать значение Maybe
?
read :: Read a => String -> Maybe a
Поскольку строка может быть не поддающейся синтаксическому анализу Haskell, не будет ли последнее более естественным?
Или даже Either String a
, где Left
будет содержать исходную строку, если она не проанализирована, а Right
результат, если он будет?
Изменить:
Я не пытаюсь заставить других написать для меня соответствующую оболочку. Просто ищу подтверждения, что это безопасно.