Questo probabilmente non è possibile, dal momento che ho già controllato l'elenco di tutte le estensioni GHC e questo non è lì, ma ho pensato di chiederlo per ogni evenienza.In Haskell posso rendere i valori letterali numerici non polimorfici di default?
C'è un modo per fare in modo che 2
è di tipo Int
(o Integer
) piuttosto che il solito Num a => a
?
(La ragione per cui mi piacerebbe questo comportamento è che rende più chiari i messaggi di errore e più probabile che sia possibile l'inferenza (specialmente con classi di tipi) Potrei sempre scrivere (2 :: Int) ovunque ma vorrei piuttosto il comportamento "più sicuro" è quello meno esplicito)
sì, non farlo :) l'inferenza di tipo di solito non è poi così male. forse se pubblichi un problema di esempio, le persone possono aiutarti a risolverlo in un modo diverso? puoi impostare i valori predefiniti tramite http://www.haskell.org/tutorial/numbers.html. puoi anche sviluppare prototipando i tipi di funzioni di primo livello impostandole su 'f = undefined :: DesiredType', e svuotale in modo appropriato. – gatoatigrado
Le costanti polimorfiche non mi impediscono di fare nulla, ma rendono i messaggi di errore meno diretti, di solito cambiando un "non può corrispondere al tipo atteso ..." a "nessuna istanza per ...". Di default non ti permettono di dedurre un'istanza per una classe (e sentiti come un po 'di hacking) – Owen