下面的程序產生在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專家的對面,所以如果答案很明顯,請原諒我。