Существует ли полная альтернатива функции `read`?

Почему функция read завершает исполняемый файл, если он не может проанализировать его аргумент?

Мне кажется, что было бы удобнее иметь функцию типа String -> Maybe a, которая возвращает Nothing, если строка не может быть разобрана с типом a, но я ничего не могу найти нравится. Что мне не хватает?

Ответы

Ответ 1

Функция, которую вы ищете, называется readMaybe и определяется в модуле Text.Read:

https://hackage.haskell.org/package/base-4.9.1.0/docs/Text-Read.html#v:readMaybe

Он доступен с GHC 7.6. До этого вам нужно было вызвать reads, который возвращает (потенциально пустой) список проанализированных значений и совпадение шаблона на нем.