
#13060: Visible type application doesn't work for functions with inferred types -------------------------------------+------------------------------------- Reporter: Feuerbach | Owner: Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler (Type | Version: 8.0.1 checker) | Resolution: invalid | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by Feuerbach): * status: new => closed * resolution: => invalid Comment: Thanks Richard, this makes sense. I agree that depending on the inferred order of type variables in actual code would be a bad idea. In my case, I was just trying to evaluate something quickly in ghci like this: {{{ *Main> description decoGrid <interactive>:64:1: error: • Ambiguous type variable ‘a0’ arising from a use of ‘description’ prevents the constraint ‘(LayoutModifier (Decoration DefaultDecoration DefaultShrinker) a0)’ from being solved. Probable fix: use a type annotation to specify what ‘a0’ should be. These potential instance exist: one instance involving out-of-scope types (use -fprint-potential-instances to see them all) • In the expression: description decoGrid In an equation for ‘it’: it = description decoGrid <interactive>:64:13: error: • Ambiguous type variable ‘a0’ arising from a use of ‘decoGrid’ prevents the constraint ‘(Eq a0)’ from being solved. Probable fix: use a type annotation to specify what ‘a0’ should be. These potential instances exist: instance Eq XEvent -- Defined in ‘Graphics.X11.Xlib.Event’ instance Eq FontSet -- Defined in ‘Graphics.X11.Xlib.Extras’ instance Eq FontStruct -- Defined in ‘Graphics.X11.Xlib.Font’ ...plus 61 others ...plus 138 instances involving out-of-scope types (use -fprint-potential-instances to see them all) • In the first argument of ‘description’, namely ‘decoGrid’ In the expression: description decoGrid In an equation for ‘it’: it = description decoGrid *Main> :t decoGrid decoGrid :: forall {a}. Eq a => ModifiedLayout (Decoration DefaultDecoration DefaultShrinker) Grid a *Main> -- ok, so I need to apply decoGrid to the right type param *Main> description (decoGrid @Window) <interactive>:67:14: error: • Cannot apply expression of type ‘ModifiedLayout (Decoration DefaultDecoration DefaultShrinker) Grid a0’ to a visible type argument ‘Window’ • In the first argument of ‘description’, namely ‘(decoGrid @Window)’ In the expression: description (decoGrid @Window) In an equation for ‘it’: it = description (decoGrid @Window) *Main> -- this works: *Main> :set -XPartialTypeSignatures -Wno-partial-type-signatures *Main> description (decoGrid :: _ Window) "DefaultDecoration Grid" }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13060#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler