
#15743: Nail down the Required/Inferred/Specified story -------------------------------------+------------------------------------- Reporter: simonpj | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.6.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by goldfire): I'm having second thoughts about my more permissive approach. Consider {{{#!hs data SameKind :: k -> k -> * data Bad a (c :: Proxy b) (d :: Proxy a) (x :: SameKind b d) }}} We could infer this ordering for the tyvars of `Bad`: `@{k :: Type} (a :: k) @(b :: Proxy a) (c :: Proxy b) (d :: Proxy a) (x :: SameKind b d)`. My notation indicates that `k` is Inferred, `b` is Specified, and the rest are Required. Note that a Specified is going ''after'' a Required here. Is this too clever by half? Or is it snazzy that we can accept this? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15743#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler