Funkcja ta jest błędna i nie będzie skompilować:Dlaczego liczby Num nie można porównać z 0?
checkIsZero :: (Num a) => a -> String
checkIsZero a = if a == 0
then "Zero"
else "Not zero"
To nie działa z powodu porównania pomiędzy Num
i 0
w wyrażeniu a == 0
. Zmiana Num
na Integral
powoduje, że jest to ważna funkcja.
Co to jest ta niegodziwa magia, która nie pozwala mi porównać moich liczb z 0
?!
w ghci wydaje się działać na num; czy używasz ghc? jaki jest komunikat o błędzie? – jev
Umieszczam powyższą funkcję w "functions.hs', następnie robię': l functions.hs' w 'ghci' i otrzymuję błąd' Nie można wywnioskować (Eq a) wynikającego z użycia '==' ' –
@jev Od GHC 7.4, to nie powinno działać, przynajmniej nie z tym typem podpisu. 'Eq' nie jest już domniemany przez' Num'. –