Следующая программа дает ошибку в GHCI:Как использовать fromInteger без подразумеваемой прелюдии в Haskell?
{-# LANGUAGE NoImplicitPrelude #-}
import Prelude (Integer, Bool)
import qualified Prelude
class Discrete a where
(==) :: a -> a -> Bool
instance Discrete Integer where
(==) = (Prelude.==)
class Monoid a where
one :: a
(*) :: a -> a -> a
fromInteger :: Integer -> a
fromInteger 1 = one
А именно:
fromInteger.hs: 17: 16:
Нет экземпляра для (Monoid Integer)
, вытекающее из буквального1' at fromInteger.hs:17:16
fromInteger ': fromInteger 1 = один
Possible fix: add an instance declaration for (Monoid Integer)
In the pattern: 1
In the definition of
Как исправить это, lue one
для моноидов? Все остальные целые числа могут (или должны) давать Prelude.undefined
при применении к (Monoid a) => fromInteger
.
Обратите внимание, что я являюсь противоположностью эксперта Хаскелу, поэтому, пожалуйста, простите меня, если ответ будет очевиден.