blob: 8cd818bc0f52e9298277f89ab6942184c68dfbad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ViewPatterns #-}
module T18005 where
type S1 = Int -> (forall a. a -> a) -> Int
data T1a = MkT1a {unT1a :: S1}
| Dummy1
newtype T1b = MkT1b S1
unT1b' :: T1b -> S1
unT1b' (MkT1b x) = x
pattern MkT1b' :: S1 -> T1b
pattern MkT1b' {unT1b} <- (unT1b' -> unT1b)
type S2 = Int -> forall a. a -> a
data T2a = MkT2a {unT2a :: S2}
| Dummy2
newtype T2b = MkT2b S2
unT2b' :: T2b -> S2
unT2b' (MkT2b x) = x
pattern MkT2b' :: S2 -> T2b
pattern MkT2b' {unT2b} <- (unT2b' -> unT2b)
|