Тип read "0o10"
:
GHCi> :t read "0o10"
read "0o10" :: Read a => a
В GHCi переменная типа a
будет иметь значение по умолчанию ()
, , как описано в Руководстве пользователя :
GHCi> read "()"
()
Обратите внимание, что описываемое вами поведение не ограничивается строками, которые будут проанализированы как восьмеричные ...
GHCi> read "[1,2,3]"
*** Exception: Prelude.read: no parse
... и что lex :: ReadS String
, в отличие от read
, специально генерирует String
результаты, а не позволяет вам выбрать экземпляр Read
.
Чтобы получить ожидаемое поведение, предоставьте подходящую аннотацию типа или подпись:
GHCi> read "0o10" :: Integer
8