Strona Standard Haskell Classes mówi następujący temat reads :: (Read a) => String -> [(a,String)]
:Kiedy może występować niejednoznaczny zapis z odczytami?
Normalnie, parser zwraca listę singleton, zawierające wartość typu A, który został odczytany z ciągu wejściowego oraz pozostały ciąg który następuje co analizowany . Jeśli jednak nie było możliwe przetwarzanie, wynikiem jest pusta lista, a jeśli istnieje więcej niż jedna możliwa analiza (niejednoznaczność), wynikowa lista zawiera więcej niż jedną parę.
W jakich sytuacjach lub przykładach ujawnia się ta niejednoznaczność?
pomyśl o 'data Foo = F | Fo | Foo wyprowadza (Show, Read) 'i' czyta "FooBar" :: [(Foo, String)] ' – epsilonhalbe
@epsilonhalbe ... niestety to nie zadziała w ten sposób (" czyta "FooBar" :: ... "będzie yield '[]') – Carsten
Świetne pytanie! Domyślam się, że to się nigdy nie zdarza w standardowych typach bibliotek, ale 'reads' nadal odpowiada za możliwość, że użytkownik może chcieć zdefiniować reprezentację" kodu przedrostkowego "dla swoich własnych typów. (?) IMHO, uważam, że 'readMaybe' jest bardziej użyteczny w praktyce. – chi