
#11350: Allow visible type application in patterns -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.1 Resolution: | Keywords: | TypeApplications PatternSynonyms Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #11385, #13159, | Differential Rev(s): #13158 | Wiki Page: | -------------------------------------+------------------------------------- Comment (by Iceland_jack): Using the types from [https://github.com/goldfirere/glambda/blob/master/src/Language/Glambda/Type.... Glambda], can we use this to implement {{{#!hs refineTy_ :: Ty -> (forall ty. ITy ty => Proxy ty -> r) -> r refineTy_ IntTy k = k @Int Proxy refineTy_ BoolTy k = k @Bool Proxy refineTy_ (Arr a b) k = refineTy a $ \(Proxy :: Proxy a_ty) -> refineTy a $ \(Proxy :: Proxy b_ty) -> k @(a_ty -> b_ty) Proxy }}} without `Proxy ty`? {{{#!hs refineTy_ :: Ty -> (forall ty. ITy ty => r) -> r refineTy_ IntTy k = k @Int refineTy_ BoolTy k = k @Bool refineTy_ (Arr a b) k = refineTy a $ \@a_ty -> refineTy a $ \@b_ty -> k @(a_ty -> b_ty) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11350#comment:17 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler