I finally had some time to have another look. I have this line in my compiler pass:
| 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) This is one of the outputs: elimUbxSumRepTypes orig args: ['Lifted, 'Lifted, 'Lifted, String, String, String] dropWhile isLevityTy args = ['Lifted, 'Lifted, 'Lifted, String, String, String] Am I doing this wrong? 2016-01-25 7:30 GMT-05:00 Richard Eisenberg <e...@cis.upenn.edu>: > As discussed on IRC, your approach below looks right to me: dropWhile > (isLevityTy . idType) args. But you then said this wasn't working for you. > What does (map idType args) say? > > Richard > > On Jan 24, 2016, at 8:58 PM, Ömer Sinan Ağacan <omeraga...@gmail.com> wrote: > >> Hi all, >> >> I'm looking for a reliable way of dropping levity args from TyCon >> applications. >> When I know that a particular TyCon gets some number of levity args, I can >> just >> drop the args manually (for example, I can drop the first half of arguments >> of >> a tuple TyCon application) but the code looks fragile (what happens if I use >> a >> different TyCon in the future) and confusing to the reader because it looks >> like this: >> >> drop (length args `div` 2) args >> >> Ideally it'd look like this: >> >> dropWhile isLevityArg args >> >> Now, there's a function called isLevityTy, but I don't understand what it's >> supposed to do. This doesn't do anyting to 'Boxed and 'Unboxed arguments: >> >> dropWhile (isLevityArg . idType) args >> >> Any ideas on this? >> >> Thanks.. > _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs