Это сигнатура типа функции.Он предназначен для того, чтобы показать, какие входы и выходы функции предполагается / ожидается.Для большинства кода на Haskell компилятор может вывести его, если вы не укажете его, но настоятельно рекомендуется всегда указывать его.
Помимо того, что вы помните, что функция на самом деле должна делать, это также хороший способдля других, чтобы получить представление о том, что делает функция.
Кроме того, это также полезно для отладки, например, когда тип функции не соответствует ожидаемому.Если у вас есть подпись типа для этой функции, вы получите сообщение об ошибке на сайте определения функции, в отличие от того, если вы не получили бы ее на сайте вызова.см. Сигнатуры типов и Зачем использовать сигнатуры типов
Кроме того, поскольку вы читаете RWH, глава 2 описывает это.