summaryrefslogtreecommitdiff
path: root/testsuite/tests/patsyn/should_compile/T10997_1a.hs
blob: 11af525c533d006d7a944eca5bf2a157c2e5d043 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{-# LANGUAGE PatternSynonyms, ViewPatterns, ConstraintKinds, TypeFamilies, PolyKinds, KindSignatures #-}
module T10997_1a where

import Data.Kind

type family Showable (a :: k) :: Constraint where
  Showable (a :: Type) = (Show a)
  Showable a           = ()

extractJust :: Maybe a -> (Bool, a)
extractJust (Just a) = (True, a)
extractJust _        = (False, undefined)

pattern Just' :: Showable a => a -> (Maybe a)
pattern Just' a <- (extractJust -> (True, a)) where
  Just' a = Just a