Cosa c'è di sbagliato in questa funzione?errore variabile di tipo rigido
test :: Show s ⇒ s
test = "asdasd"
String è un'istanza della classe Show, quindi sembra corretta.
L'errore è
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"
In GHC con estensione di linguaggio 'OverloadedStrings' e importazione' Data.String', è anche possibile utilizzare la firma 'test :: IsString s ⇒ s'. – Conal
'test :: Num => a' diverso da' test :: Num'? –
@mcb Dipende da come si definisce "diverso". Sono entrambi errori, quindi in questo senso sono uguali. Comunque potresti obiettare che sono diversi perché presumibilmente sono il risultato di diversi errori. Questo è 'test :: Num => a' potrebbe essere il risultato di un semplice refuso (dimenticando' a' prima di '=>'), mentre 'test :: Num' è presumibilmente il risultato dell'autore del codice che pensa che 'Num' è un tipo e non una classe di tipo. – sepp2k