Is it possible to query the ghci for the type it inferred for a function inside another function?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
This is a quick and ugly hack, but what I usually do is just use the function in the wrong way and read the error message:
inc x = x + 1
where
f (y, z) = y + z
g = f :: Char
GHCi output:
Couldn't match expected type `Char'
against inferred type `(t, t) -> t'
In the expression: f :: Char
Although this leaves out the context Num t =>
, this usually does provide me with enough information to continue.
回答2:
You might try doing it by setting a breakpoint on it, so the function is in scope from the debugger.
Also I think that EclipseFP can tell you the types of things when you mouse over them, at least some of the time.
回答3:
With GHC 7.8+, just append `asTypeOf` _
to the expression.
See Find out the type of an expression/function with typed holes for a detailed explanation.