我在普通文件中有2个函数,没有别的。
--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
我正在使用GHC 7.8.3
我知道FN1中存在类型错误。我知道这一点。 当注释并运行FN1时,GHCi不会抛出任何错误。 但是当FN1被取消注释并且运行GHCi显示FN1中的明显错误时,FN2也会出现2页长的错误。
我不明白这一点。 FN1和FN2之间没有明确的关系。 FN1中没有任何内容正在调用FN2,反之亦然。但是,当FN1被取消注释时,为什么GHCi会显示FN2的错误?
确切的错误足够长,我决定把它放在lpaste
上有人可以告诉我,发生了什么事吗?很可能,我误解了一些事情。
答案 0 :(得分:8)
这是GHC Trac门票#9323,其中给出了示例
module Foo where
broken :: [Int]
broken = ()
ambiguous :: a -> String
ambiguous _ = show 0
" thomie"在Simon Peyton Jones在7月离开this comment之后关闭了机票:
HEAD的一切都很好。 (我不知道有多少变化 在7.8和HEAD之间负责。)
我会添加回归测试。但我并不打算修复7.8。
西蒙
注意:GHC开发圈中一个特殊但现在根深蒂固的惯例是将官方git master
分支称为HEAD
。