It might be nice to actually replace `drop (length args `div` 2) args` with a function `dropLevityArgs = dropWhile (isLevityTy . typeKind)` (I did this in my branch). When I see a code that drops half of the type arguments it doesn't make sense right away, but `dropLevityArgs` is at least giving an idea of what's actually happening.
2016-01-28 20:30 GMT-05:00 Ömer Sinan Ağacan <omeraga...@gmail.com>: > Ahh, levity is type of kinds, right? For some reason I thought kinds are now > levities (or whatever it's called). This makes sense. I just tried and I think > it works, thanks. > > 2016-01-28 19:39 GMT-05:00 Richard Eisenberg <e...@cis.upenn.edu>: >> >> On Jan 28, 2016, at 5:48 PM, Ömer Sinan Ağacan <omeraga...@gmail.com> wrote: >>> >>> | Just (tc, args) <- splitTyConApp_maybe ty >>> , isUnboxedTupleTyCon tc >>> = pprTrace "elimUbxSumRepTypes" >>> (text "orig args:" <+> ppr args $$ >>> text "dropWhile isLevityTy args = " <+> ppr (dropWhile >>> isLevityTy args)) $ >>> concatMap go (drop (length args `div` 2) args) >> >> You want (dropWhile (isLevityTy . typeKind) args). isLevityTy simply checks >> if its argument is exactly `Levity`. >> >> Does that work? >> >> Richard _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs