Проблема в том, что (с NoImplitPrelude) вы можете использовать целочисленные литералы только для типов, для которых в области видимости есть функция fromInteger
.
Таким образом, в вашем коде вы можете использовать только целочисленные литералы для представления экземпляров Monoid
, и, поскольку в вашем коде Integer
не является экземпляром Monoid
, вы не можете использовать литерал 1
для представления Целое число 1.
Чтобы исправить это, вы можете создать другой модуль, который импортирует прелюдию и определит integerOne :: Integer = 1
.
Затем вы можете определить вашу fromInteger
функцию как:
fromInteger x | x == integerOne = one