25
¿Cómo puedo tener múltiples restricciones de clase, por lo que si A
es un Eq
y B
es una Num
, que podría decir, ya seatipos de Haskell de la firma con varias restricciones de clase
f :: Eq a => a -> b`
o
f :: Num b => a -> b
Así ¿Cómo puedo tener Eq a =>
y Num b =>
al mismo tiempo?
f :: Eq a => Num b => a -> b
,f :: Eq a -> Num b => a -> b
yf :: Eq a, Num b => a -> b
no hacía lo que quería.
Aha! Gracias. ¿Estos paréntesis con una coma causan una tupla de alto nivel de algún tipo, o es este otro significado de paréntesis? –
@ Andrew realmente lo hacen (ahora) aunque probablemente no deberías preocuparte por esas cosas todavía. Los tipos de Normall Haskell tienen * kind * (tipo de tipo) '*', por lo que el tipo de tupla tiene kind '* -> * -> *'. En versiones recientes de GHC hay un nuevo tipo 'Restricción' tal que' Eq :: * -> Restricción', y tuplas han sido promovidas a este nuevo tipo. –