次のプログラムでは、ghci でエラーが発生します。
{-# 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: リテラル fromInteger から生じる
(Monoid Integer) のインスタンスはありません': fromInteger 1 = one1' at fromInteger.hs:17:16
Possible fix: add an instance declaration for (Monoid Integer)
In the pattern: 1
In the definition of
one
1をモノイドの値に変換できるようにするにはどうすればよいですか? Prelude.undefined
他のすべての整数は、 に適用されたときに生成される可能性があります (または生成されるべきです) (Monoid a) => fromInteger
。
私はHaskellの専門家とは正反対なので、答えが明らかな場合はご容赦ください。