Re: [GHC] #5296: Add explicit type applications

#5296: Add explicit type applications -------------------------------------+------------------------------------- Reporter: dsf | Owner: goldfire Type: feature request | Status: closed Priority: low | Milestone: 8.0.1 Component: Compiler (Type | Version: 7.0.3 checker) | Resolution: fixed | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: GHC rejects | Test Case: valid program | typecheck/should_compile/Vta{1,2} | typecheck/should_fail/VtaFail Blocked By: 1897 | Blocking: 10770 Related Tickets: #4466 | Differential Rev(s): Phab:D1681 Wiki Page: | -------------------------------------+------------------------------------- Comment (by andrewthad): This might be a little too late, but I wanted to raise an about the relationship this has with AllowAmbiguousTypes. I haven't tried it out yet, but based on an earlier comment in this thread, I think that turning on VisibleTypeApplication will also turn on AllowAmbiguousTypes. I don't think that this is necessary, and I think that there are situation where it is detrimental the library users. Let's say that I have a `Rec` from `vinyl` and I'm using `rget` from `Data.Vinyl.Lens`. Today, if I have `myRec :: Rec Identity '[Char,Bool,Int]`, I can write `rget (Proxy :: Proxy Int) myRec` to get the `Int` value out. In the future, it may be desirable to write a function `rget2` that can take the argument by VisibleTypeApplication instead. So, we would call `rget2 @Int myRec` instead. Here's the issue that I'm getting at. What does an end user have to enable to be able to use `rget2`? At the definition site, in the case of `rget2`, we actually don't need AllowAmbiguousTypes, but let's pretend that we did (I should have picked a different example). When a user turns on VisibleTypeApplication to be able to use a function that will otherwise have ambiguous type variable instantiation, I don't think that they should get AllowAmbiguousTypes turned on as well. If I understand correctly, AllowAmbiguousTypes is only needed to define these functions, not to use them. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/5296#comment:29 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC