Kann mir bitte jemand erklären, was mir hier fehlt:
%Vor% read "4"
löst einen Fehler aus, da ghci nicht weiß, welcher konkrete Typ wir wollen, er weiß nur, dass wir eine Klasse Read
type haben. read "4" :: Int
funktioniert gut. Das ist mir klar.
Nach der obigen Logik erwartete ich nun, dass fromIntegral 4
einen Fehler auslöst:
Es funktioniert jedoch gut. Warum wird in diesem Fall keine Typennummerierung benötigt? Ich habe erwartet, dass das oben genannte fehlschlägt; und NUR
%Vor%um zu arbeiten.
NB - Ich lese "Lernen Sie ein Haskell für großes Wohl" und habe bis Kapitel 5 gedeckt. Ist das, was ich frage, in Kapitel 7 (oder einem anderen Kapitel) besprochen?
Danke.
Es funktioniert wegen type defaulting , was zu mehrdeutigen Variablen führt standardmäßig auf Integer
oder Double
(oder einen anderen benutzerdefinierten Standard) festgelegt werden. Dies geschieht nur für Num
und seine Unterklassen.
In GHCi sind die Regeln für den Ausfall entspannt , um auch für Show
, Eq
und Ord
zu funktionieren, und auch ()
wird zur Liste der Standardtypen hinzugefügt. Dadurch können Ausdrücke wie [] == []
die Überprüfung überprüfen.
Tags und Links haskell