Als ich :t 4
in GHCI eingeben bekomme ichWarum gibt ghci aus (Num a) => a für: t 4 und nicht (Ord a) => a?
Prelude> :t 4
4 :: Num t => t
Ich verstehe, warum 4
nicht nur ein Int oder eine ganze Zahl ist, und dass es infered unten nach oben, aber ich verstehe nicht, warum 4
nicht als Ord t => t
gezeigt oder noch richtig etwas wie folgt aus:
4 :: (Ord t || Num t) => t
Da 4
ist sowohl ein Ord
und ein Num
aber Ord
und Num
haben keine Verbindung ...
Warum also :t 4
Ausgabe nur Num
?
Dies wird im [haskell report] beschrieben (https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1360006.4.1) – Lee
Angenommen, ich gab '4' den Typ' Ord t = > t'. Jetzt stelle ich fest, dass 'Bool' eine Instanz von' Ord' ist. Daher '4 :: Bool'. Sollte '4 :: Bool '' True' oder 'False' sein, und warum? –
@Lee Btw, es gibt ähnliche Fragen in Bezug auf Typ Standardregeln: https://StackOverflow.com/Questions/39251728/Ghcirandomio-Type-Inferenz Ich habe versucht, es zu beantworten und den Bericht zu verstehen, aber immer noch keine klare Sicht. Vielleicht erfahrener _Haskell_ Benutzer können helfen :) – Shersh