Это известно как ограничение мономорфизма .
По сути, это означает, что привязки верхнего уровня, которые выглядят как x =
, должны быть неполиморфными, если вы не укажетеТип подписи.Привязки с аргументами, т.е. f x =
не затрагиваются.Для получения подробной информации о том, почему существует это ограничение, см. Ссылку.
Обычно при применении ограничения вы получаете сообщение об ошибке, но в этом случае GHCi может использовать тип по умолчанию, чтобы изменить тип Num a => a
наInteger
.
Самый простой способ уклониться от этого - либо использовать явную сигнатуру типа, либо поставить
{-# LANGUAGE NoMonomorphismRestriction #-}
в верхней части вашего модуля, либо запустить GHCi с -XNoMonomorphismRestriction
.