
#10697: Change template-haskell API to allow NOUNPACK, lazy annotations -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Template Haskell | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #5290, #8347 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott):
(relatedly I wonder if I can get GHC to tell me what strictness/unpackedness is ultimately choosen, as a debugging tool)
You can, with [http://git.haskell.org/ghc.git/blob/f4f00c0f28f3c21eb6f1396f48058c430c4e9b30... dataConImplBangs]. [http://git.haskell.org/ghc.git/blob/f4f00c0f28f3c21eb6f1396f48058c430c4e9b30... HsImplBang] only has three possible configurations: `HsLazy`, `HsStrict`, and `HsUnpack`. This is more or less what TH tries to do right now, except in a half-baked way. For example, if you try to splice in a datatype with an argument that is both unpacked and lazy, it will just revert to `NotStrict`. (It doesn't take `-XStrict` or `-funbox-strict-fields` into account, however.) I strongly feel that we need to include both the `HsSrcBang` and `HsImplBang` information in Template Haskell (and probably in generics, if we fix [https://ghc.haskell.org/trac/ghc/ticket/10716 this issue]). Otherwise, we are misleading users. I don't like the idea of having to look up whether a dynamic flag is turned on or not (via `isExtEnabled` or otherwise) to know for sure what something's strictness is. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10697#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler