I'm doing some work in GHC that requires explicitly applying kinds to
the kind variables of a data type. I noticed that the order in which
the implicit kind variables are sorted is not as predictable as I
originally thought. To illustrate what I mean, here is a GHCi session
I had recently (with GHC HEAD):
$ /opt/ghc/head/bin/ghci -XTypeInType
GHCi, version 8.1.20160412: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /home/ryanglscott/.ghci
> data T (a :: j -> k -> l) (b :: (x, y, z)) = MkT
> :t MkT
MkT
:: forall x y z l k j (a :: j -> k -> l) (b :: (x, y, z)). T a b
Much to my surprise, the order of the kind variables wasn't [j, k, l,
x, y, z], but rather [x, y, z, l, k, j]! I know that type variables
are sorted with a stable topological sort [1], but there must be some
other subtlety that I'm missing. How does GHC come up with the order
[x, y, z, l, k, j]?
Ryan S.
-----
[1]
http://git.haskell.org/ghc.git/blob/d81cdc227cd487659995ddea577214314c9b4b97:/docs/users_guide/glasgow_exts.rst#l8708
_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs