
#13642: GHCi 8.2 simply ignores TH splice using datatype with a forall'd kind signature -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Template | Version: 8.2.1-rc1 Haskell | Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- This is a pretty bizarre behavior I've noticed recently that only happens in GHC 8.2 or later. If you try to use a Template Haskell splice with a very particular feature (a datatype whose kind uses `forall`) in GHCi, then GHCi will flat-out ignore it! {{{ $ /opt/ghc/8.2.1/bin/ghci GHCi, version 8.2.0.20170427: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/rgscott/.ghci λ> :set -XGADTs -XTypeInType -XTemplateHaskell -XRankNTypes λ> import Language.Haskell.TH (stringE, pprint) λ> import Data.Kind (Type) λ> $([d| data Foo :: forall a. a -> Type where MkFoo :: Foo Int |] >>= stringE . pprint) λ> print (5 + length $([d| data Foo :: forall a. a -> Type where MkFoo :: Foo Int |] >>= stringE . pprint)) λ> 5 5 λ> it 5 λ> $([d| data Foo :: forall a. a -> Type where MkFoo :: Foo Int |] >>= stringE . pprint) λ> it 5 }}} Notice how none of my attempts to use the splice seemed to register with GHCi. This isn't really a regression //per se//, since GHC 8.0.1 nor 8.0.2 even allowed you to get that far: {{{ $ /opt/ghc/8.0.2/bin/ghci GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/rgscott/.ghci λ> :set -XGADTs -XTypeInType -XTemplateHaskell -XRankNTypes λ> import Language.Haskell.TH (stringE, pprint) λ> import Data.Kind (Type) λ> $([d| data Foo :: forall a. a -> Type where MkFoo :: Foo Int |] >>= stringE . pprint) <interactive>:4:3: error: Exotic form of kind not (yet) handled by Template Haskell forall a. a -> Type }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13642 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler