Il seguente programma produce un errore in ghci:Come usare fromInteger senza preludio implicito in 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
Vale a dire:
fromInteger.hs: 17: 16:
Nessuna istanza per (Monoide intero)
derivanti dalla letterale1' at fromInteger.hs:17:16
fromInteger ': fromInteger 1 = one
Possible fix: add an instance declaration for (Monoid Integer)
In the pattern: 1
In the definition of
Come posso risolvere il problema in modo che 1 possa essere convertito nel va lue one
per i Monoidi? Tutti gli altri numeri interi possono (o dovrebbero) produrre Prelude.undefined
quando applicati a (Monoid a) => fromInteger
.
Si prega di essere consapevole che io sono l'opposto di un esperto di Haskell quindi per favore perdonami nel caso in cui la risposta sia ovvia.