Translate

domingo, 1 de noviembre de 2020

Tipos con Clase


Type class son una forma de sobrecargar funciones u operadores al imponer restricciones al polimorfismo.

Por ejemplo:

(+) :: a -> a -> a

no está bien porque queremos restringir la suma de números.

Igualmente,

     (<) :: a -> a -> Bool

no está bien porque no está claro a priori cómo comparar con tipos arbitrarios.

Para abordar este problema, Haskell proporciona Type class. Estos restringen el polimorfismo. Por ejemplo:

     (+) :: Num a => a -> a -> a

dice que el tipo a debe ser numérico, y

     (<) :: Ord a => a -> a -> Bool

dice que debe ser ordenable.

Y eso es todo! listo, pero pero puedo crear mi propio type class? Lucho, por supuesto viejo... pero lo vamos a ver en el próximo post.