下面的程序产生在ghci中的错误:从字面1' at fromInteger.hs:17:16
产生
Possible fix: add an instance declaration for (Monoid Integer)
In the pattern: 1
In the definition of
否实例(含半幺群整数)
:如何在Haskell中使用fromInteger而不隐含前奏?
{-# 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':fromInteger 1 = one
如何解决这个问题,使1可以转换为va lue one
为Monoid?所有其他整数在应用于(Monoid a) => fromInteger
时可能(或应该)产生Prelude.undefined
。
请注意,我是Haskell专家的对面,所以如果答案很明显,请原谅我。