Che cosa sta succedendo esattamente con quanto segue?Quando la riduzione di eta può cambiare il tipo di una funzione?
> let test = map show
> :t test
test :: [()] -> [String]
> :t (map show)
(map show) :: Show a => [a] -> [String]
Mi chiedo come non l'ho notato prima? In realtà ho riscontrato il problema con "map fromIntegral" piuttosto che show - il mio codice non viene compilato con la forma pointfree, ma funziona bene senza riduzione di eta.
Esiste una semplice spiegazione di quando la riduzione di eta può modificare il significato del codice Haskell?
WOW mi dispiace, avrebbe dovuto sapere. Avevo persino provato il pragma della lingua ma avevo dimenticato di includere i segni dell'hash e GHC non stava dicendo la solita cosa sulla "probabile causa". – sacheie
Per essere precisi è la limitazione del monomorfismo combinata con le regole estese di default di GHCi. – sepp2k