Hi. I just today had a very similar problem with a kind-polymorphic class definition. Simplified example (with ScopedTypeVariables, TypeInType, TypeApplications):
GHCi> class C a where c :: () GHCi> :t c c :: forall k (a :: k). C a => () GHCi> :t c @Int c @Int :: C a => () GHCi> :t c @_ @Int c @_ @Int :: C Int => () GHCi> let d :: forall a . C a => (); d = c @_ @a GHCi> :t d d :: forall k (a :: k). C a => () GHCi> :t d @Int d @Int :: C Int => () I find it particularly confusing that GHCi prints the types of c and d in exactly the same way, yet treats explicit type application on them differently. Cheers, Andres On Thu, Jan 7, 2016 at 6:54 PM, Ryan Scott <ryan.gl.sc...@gmail.com> wrote: > I read in the Visible Type Applications paper [1] that you can only > apply types to "specified" type variables. However, after trying out > -XTypeApplications, I'm confused as to what exactly that means: > > $ /opt/ghc/head/bin/ghci > GHCi, version 8.1.20160106: http://www.haskell.org/ghc/ :? for help > λ> :set -XTypeInType -XTypeApplications > λ> data Prox a = Prox > λ> let prox :: Prox a; prox = Prox > λ> :t prox @Int > prox @Int :: Prox Int > λ> :t Prox @Int > Prox @Int :: Prox a > > Huh? For some reason, I'm getting different types for prox @Int and > Prox @Int! I think what's happening here is that in Prox @Int, the Int > is being applied to a kind variable. That is, it's being applied to > the k variable in: > > Prox :: forall k (t :: k). Prox t > > But why is this? After all, I don't think I "specified" k anywhere in > the definition of Prox, and to make things more confusing, Int gets > applied differently in prox @Int (and the definition of prox also > doesn't mention k). Is this a bug, or am I misunderstanding something > about -XTypeApplications? > > Ryan S. > ----- > [1] http://www.cis.upenn.edu/~eir/papers/2016/type-app/visible-type-app.pdf > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs