Ich möchte eine klare Erklärung von Num
, Real
, Integral
, Integer
, Int
, Ratio
, Rational
, Double
, Float
.Erläuterung der Zahlen in Haskell
Antwort
Diese Antwort geht davon aus, dass Sie den Unterschied zwischen Typen und Typklassen kennen. Wenn dieser Unterschied zu dir ist dann clear up your understanding dort vor dem Lesen.
Num
Num
ist ein typeclass, die alle numerischen Typen enthält.
:info Num
class Num a where
(+) :: a -> a -> a
(-) :: a -> a -> a
(*) :: a -> a -> a
negate :: a -> a
abs :: a -> a
signum :: a -> a
fromInteger :: Integer -> a
-- Defined in ‘GHC.Num’
instance Num Word -- Defined in ‘GHC.Num’
instance Num Integer -- Defined in ‘GHC.Num’
instance Num Int -- Defined in ‘GHC.Num’
instance Num Float -- Defined in ‘GHC.Float’
instance Num Double -- Defined in ‘GHC.Float’
Echt
Auch ein typeclass diese Typen abdeckt, die als reale Wert dargestellt werden kann (der Rational
-Typ).
:info Real
class (Num a, Ord a) => Real a where
toRational :: a -> Rational
-- Defined in ‘GHC.Real’
instance Real Word -- Defined in ‘GHC.Real’
instance Real Integer -- Defined in ‘GHC.Real’
instance Real Int -- Defined in ‘GHC.Real’
instance Real Float -- Defined in ‘GHC.Float’
instance Real Double -- Defined in ‘GHC.Float’
Integral
Eine Typklasse für Integrale, wissen Sie, ...,-2,-1,0,1,...
. Typen wie Integer (aka Big Int), Int, Int64 usw. sind Instanzen.
:info Integral
class (Real a, Enum a) => Integral a where
quot :: a -> a -> a
rem :: a -> a -> a
div :: a -> a -> a
mod :: a -> a -> a
quotRem :: a -> a -> (a, a)
divMod :: a -> a -> (a, a)
toInteger :: a -> Integer
-- Defined in ‘GHC.Real’
instance Integral Word -- Defined in ‘GHC.Real’
instance Integral Integer -- Defined in ‘GHC.Real’
instance Integral Int -- Defined in ‘GHC.Real’
Integer
A-Typ, kein Typklasse wie, was wir bis jetzt über gesprochen haben, kann man erkennen, unbegrenzt ganze Zahlen darstellen. Also 2^3028
ist ein rechtlicher Wert.
Int
Eine feste Breite integral. Im GHC-Compiler sind dies 32 oder 64 Bits, abhängig von Ihrer Architektur. Die Haskell-Sprache garantiert nur, dass dies mindestens 29 Bit sein wird.
Verhältnis
Dies ist eine Art Konstruktor, so dass Sie so etwas wie Ratio Integer
sagen würden, einen Typen für Quote von zwei ganzen Zahlen zu erhalten (mathematisch a/b
).
Rational
Nun ein rationaler ist buchstäblich ein Verhältnis zweier ganzer Zahlen, Verhältnis zu verstehen und Sie sind gut:
:i Rational
type Rational = Ratio Integer
Doppel
Ein Typ für double precision floating Punktwerte.
Float
A-Typ für einfache Genauigkeit Gleitkommawerte.
'Ratio' ist das Verhältnis zweier Werte mit einem * beliebigen * numerischen Typ. 'Rational' ist das Verhältnis zweier ganzzahliger * Ganzzahlen. – MathematicalOrchid
Es ist ein interessantes Bild in den Haskell documentation die Beziehungen zwischen den Klassen und den Typinstanzen zeigt, die die meisten von denen, die Sie erwähnen:
bezüglich der Rational numbers:
Für jeder
Integral
Typ t, gibt es eine ArtRatio
t von rationalen Paaren mit Komponenten des Typs t. Der TypnameRational
ist ein Synonym fürRatio Integer
.
- 1. Haskell. Zahlen in Binärzahlen.
- 2. Haskell - Verwandle Buchstaben in Zahlen
- 3. Vektorquantisierung in der Sprachverarbeitung Erläuterung
- 4. Erläuterung der nginx-Protokollanweisung
- 5. Erläuterung der SendMessage-Nachrichtennummern?
- 6. Haskell Cofrime negative ganze Zahlen?
- 7. Große Zahlen negativ werden in Haskell
- 8. Repräsentiere die Reihenfolge der tetraedrischen Zahlen in Haskell
- 9. die Befugnisse der Zahlen in Haskell mit foldl Hinzufügen
- 10. Summieren der ersten n ungeraden Zahlen in Haskell
- 11. Umgang mit großen Zahlen in Haskell
- 12. Haskell spuckt falsche Zahlen zufällig aus
- 13. Haskell erzeugt alle Kombinationen von n Zahlen
- 14. Funktion Zeigerspeicher Erläuterung in C
- 15. Erläuterung reduzieren Filter in JavaScript
- 16. Erläuterung des Ausführungsplans in Oracle
- 17. Erläuterung der Knotenpfade bezüglich .pipe schlingen()
- 18. Hadoop MapReduce: Erläuterung zur Anzahl der Reduzierungen
- 19. Erläuterung der GRU-Zelle im Tensorflow?
- 20. iBeacon Arbeitsablauf Erläuterung
- 21. Stupid Backoff Implementierung Erläuterung
- 22. R: Erläuterung zur Speicherverwaltung
- 23. XCode MVC Erläuterung
- 24. Objective-C-Code Erläuterung?
- 25. Erläuterung bestimmten SQL-Injection
- 26. Erläuterung zu PDOStatement :: fetch()
- 27. Adventure Works Erläuterung
- 28. $ .Extend-Dokumentation Erläuterung
- 29. ReactiveCocoa SignalProducer Erläuterung
- 30. Summiere alle Zahlen von 1 Milliarde in Haskell
Vielleicht gefällt Ihnen die [Grafik aus dem Bericht] (https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1270011), die die Beziehungen zwischen den Standardklassen und -typen beschreibt. –
Für den Anfang hilft das? https://wiki.haskell.org/Converting_numbers – ErikR
Sie sollten hier einen Blick werfen: https://en.wikibooks.org/wiki/Haskell/Type_basics_II –