
#13401: GHCi gives conflicting information about visible type application -------------------------------------+------------------------------------- Reporter: crockeea | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 8.0.1 Resolution: | Keywords: | TypeApplications Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #11376, #11975 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): It's not that the information that `:type` gives is wrong, it's just not what you're asking for. `:type foo` gives you the visibility of `foo` as an expression post-typechecking. This can be quite handy when you have, say: {{{ λ> let foo :: a; foo = undefined λ> :type foo @Int foo @Int :: Int λ> :type foo foo :: forall {a}. a λ> let goo = foo λ> :type goo goo :: forall {a}. a λ> :type goo @Int }}} Notice that you can't use VTA with `goo`, since its type (which is the same as `foo`, post-typechecking) doesn't have any visible type variables. This is precisely what `:type foo` warned us about, and I'd hate to cripple a legitimately useful feature for the benefit of a degenerate case. My suggestion would be to include a blurb in the users' guide section that gives an example of asking GHCi for the visibility of a top-level expression (using `:type +v`), and then show the pitfalls of using `:type`. Would you be satisfied with that? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13401#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler