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