這是一個初學者的問題,但我無法在任何地方識別出任何答案。
下面的代碼:在類型類型的默認值中輸入註釋會導致「無法推論」類型的錯誤
class A a where
foo :: a
class A a => B a where
bar :: a
bar = (foo :: a)
未能在GHC編譯,並顯示錯誤消息:
Could not deduce (A a1) arising from a use of `foo'
from the context (B a)
bound by the class declaration for `B'
...
GHC似乎不相信所有的一個在類型類B的定義是相同的。任何人都可以請解釋究竟是哪一種推理?
刪除第5行類型標註避免課程的問題,但我還是想明白是怎麼回事...
非常感謝! XScopedTypeVariables的文檔正是我所需要的。 – bklin 2012-04-20 10:16:02
@bklin:如果你認爲它足夠全面,你應該接受他的答案;) – 2012-04-20 11:56:55