If I write
bigNumber :: (Num a) => a bigNumber = product [1..100]
then when bigNumber :: Int is evaluated,
it evaluates (product :: [Int] -> Int) [(1 :: Int) .. (100 :: Int)] ,
and when bigNumber :: Integer is evaluated,
it evaluates (product :: [Integer] -> Integer) [(1 :: Integer) .. (100 :: Integer)] .
Nothing is shared between them.
error_diffs has one type, that is: [Double] -> NetworkState [(Int, Int, Double)] . It must be evaluated in one way.
However, what you have inside:
... :: NetworkState ([FAD.Dual tag Double] -> FAD.Dual tag Double)
can be evaluated differently depending on what tag .
See the problem?
source share