Quelqu'un peut-il m'aider avec cela? J'essaye d'écrire une fonction vérifiant si un x est impair, sans utiliser la fonction impaire. Comme ça ça ne marche pas mais je ne sais pas pourquoi.Fonction Haskell vérifiant si le nombre est impair, sans utiliser la fonction impaire
ugerade :: Integral a => a -> Bool
ugerade x
|x elem oddList = True
|otherwise = False
where
oddList=[x | x<-[1,3..]]
Erreur
Could not deduce (Num t0) arising from the literal ‘1’
from the context (Integral a)
bound by the type signature for ugerade :: Integral a => a -> Bool
at /Users/Mauritius/Desktop/Haskell/u02/2-2/funktionen.hs:24:11-33
The type variable ‘t0’ is ambiguous
Relevant bindings include
oddList :: [t0]
(bound at /Users/Mauritius/Desktop/Haskell/u02/2-2/funktionen.hs:29:4)
Note: there are several potential instances:
instance Integral a => Num (GHC.Real.Ratio a)
-- Defined in ‘GHC.Real’
instance Num Integer -- Defined in ‘GHC.Num’
instance Num Double -- Defined in ‘GHC.Float’
...plus three others
In the expression: 1
In the expression: [1, 3 .. ]
In a stmt of a list comprehension: x <- [1, 3 .. ]
est-modulo interdit aussi? –
non ce n'est pas. mais je voulais le faire avec une compréhension de liste. Je ne comprends pas l'erreur – Mauritius
'pas. même? :-) Plus dans l'esprit de votre effort jusqu'à présent serait 'ungerade x = Data.Maybe.fromJust (lookup x (zip [1 ..] (cycle [Vrai, Faux])))' qui se termine au moins pour positif 'x'. – yatima2975