simbolos programa opciones mundo multiplicar imprimir hola hacer como basico haskell types numbers typeclass

programa - Explicación de los números en Haskell



programa en haskell (2)

Esta respuesta asume en su mayoría que conoce la diferencia entre tipos y clases de tipos. Si esa diferencia es nebulosa para usted, aclare su comprensión allí antes de seguir leyendo.

Num

Num es una clase de tipo que incluye todos los tipos numéricos.

: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’

Real

También una clase de tipos que cubre aquellos tipos que pueden representarse como un valor real (el 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’

Integral

Una clase de tipo para integrales, ya sabes, ...,-2,-1,0,1,... Tipos tales como Integer (también conocido como big int), Int, Int64, etc. son instancias.

: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’

Entero

Un tipo, no una clase de tipo como la que hemos hablado hasta ahora, que puede representar enteros ilimitados. Entonces 2^3028 es un valor legal.

En t

Una integral de ancho fijo. En el compilador GHC esto es 32 o 64 bits dependiendo de su arquitectura. El lenguaje Haskell solo garantiza que tendrá al menos 29 bits.

Proporción

Este es un constructor de tipo, por lo que diría algo como Ratio Integer para obtener un tipo de proporción de dos enteros (matemáticamente a/b ).

Racional

Bueno, un racional es, literalmente, una proporción de dos enteros, comprender la razón y estás bien:

:i Rational type Rational = Ratio Integer

Doble

Un tipo para valores de coma flotante de doble precisión.

Flotador

Un tipo para valores de punto flotante de precisión simple.

Me gustaría una explicación clara de Num , Real , Integral , Integer , Int , Ratio , Rational , Double , Float .


Hay una imagen interesante en la documentación de Haskell que muestra las relaciones entre las clases y sus instancias de tipo, que cubre la mayoría de las que usted mencionó:

Con respecto a los números Rational :

Para cada Tipo Integral t, existe un tipo Ratio t de pares racionales con componentes de tipo t. El nombre de tipo Rational es un sinónimo de Ratio Integer .