在GHCi中的词汇绑定中推断出类型不同

时间:2014-07-09 18:23:02

标签: haskell type-inference ghci

问候,

我有点惊讶的是,无论我是否绑定它,我都会在GHCi中获得两种不同类型的表达式。我定义了一个以用户友好格式打印Tree的函数,其中drawTree带有此

let printTree = putStrLn . drawTree . fmap show

推断类型为Show a => Tree () -> IO ()。这不是我的预期。所以我试着直接输入printTree的主体。实际上,这给了我预期的类型

putStrLn . drawTree . fmap show :: Show a => Tree a -> IO ()

我知道我可以使用printTree或参数来定义$以避免此问题。但是,我想知道为什么GHCi没有相同的类型。

有人可以解释一下这种行为吗? 谢谢

0 个答案:

没有答案