Я написал очень простую программу на Haskell:(отсутствие) Неоднозначность Тип При использовании Read и Show в Haskell
main = print $ sum $ map read ["55", "99", "101"]
Учитывая мой прошлый опыт, я ожидал, чтобы получить сообщение об ошибке «неоднозначный тип», так как подпись от sum $ map read [...]
- (Read a, Num a) => a
; Num
является классом и, следовательно, сам не может реализовать класс Show
. Однако программа корректно выводила «255». Как print
удалось определить способ производства выходных данных? (show
также способен производить правильный результат без ошибок.)