我在理解 haskell 中的错误消息时遇到了一点问题。
例如:
import qualified Data.Map as M
test = M.empty
此代码按应有的方式运行,而不会收到任何错误消息。
输出如下所示:
*Main> test
fromList []
但如果我尝试这样的事情
import qualified Data.Map as M
test = do print M.empty
我收到这样的错误消息
Ambiguous type variable `k0' in the constraint:
(Show k0) arising from a use of `print'
Probable fix: add a type signature that fixes these type variable(s)
In a stmt of a 'do' block: print M.empty
In the expression: do { print M.empty }
In an equation for `test': test = do { print M.empty }
所以我认为这与打印语句有关。
但是如果我在控制台中尝试(ghci)
Prelude Data.Map> print empty
fromList []
一切正常。
所以我希望有人能解释一下问题出在哪里。
提前致谢。