Ich versuche, eine Liste der Ziffern von einer Reihe zu bekommen, hier ist mein Code:Fehlertypen immer in Haskell passen
digits x = if x > 0 then (i : digits (floor (x/10))) else [i]
where i = (mod x 10)
Der Fehler, den ich für diesen Code zu bekommen ist:
No instance for (Integral a0) arising from a use of ‘it’
The type variable ‘a0’ is ambiguous
Note: there are several potential instances:
instance Integral Integer -- Defined in ‘GHC.Real’
instance Integral Int -- Defined in ‘GHC.Real’
instance Integral Word -- Defined in ‘GHC.Real’
In the first argument of ‘print’, namely ‘it’
In a stmt of an interactive GHCi command: print it
was mache ich falsch?
Verwenden Sie 'div' anstelle von'/'und' floor' – Carsten
'' digits x = wenn x> 0 dann (x 'mod' 10): Ziffern (x' div' 10) else [x 'mod'10 ] '' - Bitte beachten Sie, dass Sie eine umgekehrte Liste (und eine unerwünschte "0" in den meisten Fällen) erhalten werden – Carsten
Das ist eine GHCi-Fehlermeldung vom Versuch, _use_ die Funktion in einem Kontext zu verwenden. Fügen Sie Ihren Funktionen immer Typensignaturen hinzu, damit die Probleme sofort erkennbar werden und nicht woanders. – leftaroundabout