¿Qué hay de malo con esta función?tipo rígido error variable
test :: Show s ⇒ s
test = "asdasd"
Cadena es una instancia de la clase Show, por lo que parece correcta.
El error es
src\Main.hs:224:7:
Couldn't match expected type `s' against inferred type `[Char]'
`s' is a rigid type variable bound by
the type signature for `test' at src\Main.hs:223:13
In the expression: "asdasd"
In the definition of `test': test = "asdasd"
En GHC con la extensión de lenguaje 'OverloadedStrings' e importar' Data.String', también puede usar la firma 'test :: IsString s ⇒ s'. – Conal
¿'test :: Num => a' es diferente de' test :: Num'? –
@mcb Eso depende de cómo se defina "diferente". Ambos son errores, entonces en ese sentido son lo mismo. Sin embargo, podría argumentar que son diferentes porque presumiblemente son el resultado de diferentes errores. Es decir 'test :: Num => a' podría ser el resultado de un simple error tipográfico (olvidando el' a' antes de '=>'), mientras que 'test :: Num' es presumiblemente el resultado del autor del código que piensa que 'Num' es un tipo y no una clase de tipo. – sepp2k