Ho 2 funzioni in un file normale con nient'altro.Quirkiness in Haskell 7.8.3
--This is FN1
helper :: Int -> Double -> Double
helper n x = (nu/d)
where
nu = x^n
d = product [1 .. n]
--This is FN2
filterOdd :: [a] -> [a]
filterOdd ls = fi ls [1..]
where
fi [] _ = []
fi (v:vs) (i:ix) = if even i
then v:(fi vs ix)
else fi vs ix
Sto usando GHC 7.8.3
So che c'è un errore di tipo in FN1. Ne sono consapevole. Quando FN1 viene commentato ed eseguito, GHCi non genera errori. Ma quando FN1 non è commentato ed esegui GHCi mostra l'errore ovvio in FN1, ma anche un errore di 2 pagine lungo per FN2.
Non capisco. Non esiste una relazione esplicita tra FN1 e FN2. Niente in FN1 chiama FN2 e viceversa. Ma perché GHCi mostra errori per FN2 quando FN1 non è commentato?
L'errore esatto è abbastanza lungo, che ho deciso di metterlo sul lpaste
Qualcuno potrebbe dirmi, che cosa sta succedendo? Molto probabilmente, ho frainteso qualcosa.
Posso osservare lo stesso comportamento (nella stessa versione di GHC), ma non riesco a spiegarlo. Sembra piuttosto strano. Non vedo l'ora di una risposta. – Jubobs
In "7.6.3' non si verifica tale errore ... –
[ecco la traccia] (https://gist.github.com/anonymous/23136f5a74d2beb33cb6) dal typechecker. GHC versione 7.8.3 –