id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc
10,Show types for subexpressions,nomeata,claus,"Hi,

not sure if this is possible, but it would be nice to use _t even on locally bound identifiers. So if I have

{{{
readTheFile filename = readFile filename
}}}

I could hover the filename (either in the pattern or in the body), and it would show ""String"" or ""FileName"".

This could be achieved by temporarily annotating the value with a type signature, e.g.

{{{
data Dummy = Dummy
readTheFile filename = readFile (filename :: Dummy)
}}}

(where Dummy might be replaced by some random string) and then parsing the error message
{{{
tmp.hs:2:33:
    Couldn't match expected type `FilePath'
           against inferred type `Dummy'
    In the first argument of `readFile', namely `(filename :: Dummy)'
    In the expression: readFile (filename :: Dummy)
    In the definition of `readTheFile':
        readTheFile filename = readFile (filename :: Dummy)
}}}
extracing the type from the ""expected type"" information.

Additional bonus if it works for subexpression in visual mode. E.g., I can select a range in the code and _t gives me the type of the range (if putting that range in brackets and adding a type signature is still valid code).

Thanks,
Joachim",enhancement,new,minor,,compiler/ghc.vim,,,,
