vorrei una chiara spiegazione di Num
, Real
, Integral
, Integer
, Int
, Ratio
, Rational
, Double
, Float
.Spiegazione dei numeri in Haskell
risposta
Questa risposta presuppone principalmente che si conosca la differenza tra tipi e classi di tipi. Se quella differenza è confusa per te allora clear up your understanding lì prima di leggere.
Num
Num
è un typeclass che include tutti i tipi numerici.
: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’
reale
Anche un typeclass copre quei tipi che può essere rappresentato come un valore reale (il tipo Rational
).
: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’
integrale
Una classe tipo per gli integrali, si sa, ...,-2,-1,0,1,...
. Tipi come Integer (aka big int), Int, Int64, ecc sono istanze.
: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
Un tipo, non è una classe di tipo come ad esempio quello di cui abbiamo parlato fino ad ora, che può rappresentare numeri interi non limitati. Quindi 2^3028
è un valore legale.
Int
A larghezza fissa solidale. Nel compilatore GHC questo è 32 o 64 bit a seconda dell'architettura. Il linguaggio Haskell garantisce solo che questo sarà di almeno 29 bit.
Rapporto
Questo è un costruttore di tipo, quindi si dovrebbe dire qualcosa di simile Ratio Integer
per ottenere un tipo per il rapporto di due numeri interi (matematicamente a/b
).
razionale
Beh un razionale è letteralmente un rapporto di due numeri interi, capire il rapporto e il gioco è fatto:
:i Rational
type Rational = Ratio Integer
doppio
Un tipo per doppia precisione floating valori in punti.
Float
Un tipo di valori virgola mobile in singola precisione.
'Rapporto 'è il rapporto di due valori con * qualsiasi * tipo numerico. 'Rational' è il rapporto tra due * interi arbitrari di precisione *. – MathematicalOrchid
C'è un'immagine interessante nel Haskell documentation che mostra le relazioni tra classi e le loro istanze di tipo, che coprono la maggior parte di quelli che hai menzionato:
Per quanto riguarda la Rational numbers:
Per ogni tipo
Integral
t, esiste un tipoRatio
t di coppie razionali con componenti di tipo t. Il nome tipoRational
è un sinonimo diRatio Integer
.
- 1. Haskell Fibonacci Spiegazione
- 2. Conversione dei numeri dei fattori in numeri
- 3. Haskell - Compilare numeri in GHC
- 4. Spiegazione dei parametri pysftp.Connection.walktree()
- 5. Haskell e numeri casuali
- 6. Spiegazione della media sicurezza di due numeri
- 7. Spiegazione dei puntatori a funzione
- 8. spiegazione dei tipi scala f
- 9. Come implementare i numeri binari in Haskell
- 10. ordinamento numeri interi veloci in haskell
- 11. Arrotondamento dei numeri in Twig
- 12. Analisi dei numeri in FParsec
- 13. OpenCV Haar Classifier spiegazione tabella dei risultati
- 14. La migliore spiegazione dei blocchi Ruby?
- 15. distribuzione dei numeri casuali
- 16. Cosa si intende per Numeri reali o valori in java e una spiegazione molto elementare dei tipi primitivi in java
- 17. Haskell che sputa a caso numeri errati
- 18. Convalida dei numeri decimali
- 19. Numeri in virgola mobile ad alta precisione in Haskell?
- 20. Spiegazione struttura dati in corda?
- 21. la rappresentazione esadecimale dei Carri in Haskell
- 22. Utilizzo dei tipi di dati in Haskell
- 23. Modellazione sicura dei dati relazionali in Haskell
- 24. Parametrizzazione dei tipi per interi in Haskell
- 25. Come controllare l'esportazione dei record in Haskell?
- 26. Utilizzo della memoria dei costruttori in Haskell
- 27. Confronto dei numeri di telefono in Android
- 28. Arrotondamento dei numeri a 10 in R
- 29. Sbarazzarsi dei numeri "Magic" in SQL Server
- 30. Ottimizzazione dei loop interni Haskell
Potrebbe piacere il [grafico del Rapporto] (https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1270011) che dettaglia le relazioni tra classi e tipi standard. –
Per i principianti, questo aiuto? https://wiki.haskell.org/Converting_numbers – ErikR
Dovresti dare un'occhiata qui: https://en.wikibooks.org/wiki/Haskell/Type_basics_II –