
#8460: Annotation reification with types in TH -------------------------------+------------------------------------------- Reporter: errge | Owner: Type: feature | Status: patch request | Milestone: 7.10.1 Priority: normal | Version: 7.7 Component: Template | Keywords: Haskell | Architecture: Unknown/Multiple Resolution: | Difficulty: Easy (less than 1 hour) Operating System: | Blocked By: Unknown/Multiple | Related Tickets: #8397 Type of failure: | None/Unknown | Test Case: | Blocking: | -------------------------------+------------------------------------------- Comment (by monoidal): I like `liftTyped`. I would go even further and add it to the `Lift` class: {{{ class Lift t where lift :: t -> Q Exp liftTyped :: t -> Q (TExp t) lift = unTypeQ . liftTyped liftTyped = unsafeTExpCoerce . lift {-# MINIMAL lift | liftTyped #-} }}} Now, when you write an instance of `Lift` {{{ data A = A instance Lift A where liftTyped A = [e|| A ||] }}} the compiler will detect if you mistakenly use a different type in the `[e|| ... ||]` brackets. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8460#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler