Hi, Btw, I also used that annoying pattern in
https://phabricator.haskell.org/D1185 to represent type-signature sections before/after typechecking: -- | Type-signature operator sections | TySigSection (LHsType id) (PostRn id [Name]) -- wildcards | TySigSectionOut (LHsType Name) (PostTc id Type) (PostTc id Coercion) I'd be interested in better ideas as well... On 2015-12-21 at 09:46:58 +0100, Simon Peyton Jones wrote: > Yes this is annoying. > > The thing is that with the first constructor only we'd get > (LHsSigWcType Id) > after type checking, but we don't have such a thing. `HsTypes` are > typechecked to `Types`. > > Perhaps we could have > (LHsSigWcType (StopAtRenamer d)) > > where > type family StopAtRenamer a where > StopAtRenamer Id = Name > StopAtRenamer x = x > > If this pattern happened a lot it might be worth it. But I think this is the > only occurrence. > > Better ideas welcome. > > Simon > > | -----Original Message----- > | From: ghc-devs [mailto:[email protected]] On Behalf Of Alan > | & Kim Zimmerman > | Sent: 19 December 2015 13:15 > | To: [email protected] > | Subject: ExprWithTySigOut > | > | At the moment HsExpr includes the following two constructors > | > | | ExprWithTySig > | (LHsExpr id) > | (LHsSigWcType id) > | > | | ExprWithTySigOut -- Post typechecking > | (LHsExpr id) > | (LHsSigWcType Name) -- Retain the signature, > | -- as HsSigType Name, for > | -- round-tripping purposes > | > | I do not understand why we need the second one, which hard-codes Name > | instead of id. > | > | There are a couple of places where there is an XXXOut variant with > | hard coded Name parameter, and these complicate creating any kind of > | custom class intended to work on a parameterised AST as it ripples out > | and forces Name instances of it everywhere. > | > | Perhaps we should introduce HsExprLR id id to cope with renaming? > | > | Alan > | _______________________________________________ > | ghc-devs mailing list > | [email protected] > | https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fmail.h > | askell.org%2fcgi-bin%2fmailman%2flistinfo%2fghc- > | devs&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7c70b008fd4c5b43b > | 3915e08d308766f7d%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=MB%2fBX > | bBIUeYFlOOH5PGXV27wJpZRNKcHJV%2fTQmfI%2f%2bE%3d > _______________________________________________ > ghc-devs mailing list > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs -- "Elegance is not optional" -- Richard O'Keefe _______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
