blob: 1d8c5267dba319127d2ca0b69df2c7e3c777f1f7 (
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
module A (
) where
-- This reproduces the issue where type variables would be lifted out in
-- different orders. Compare:
--
-- lvl =
-- \ (@ (c :: * -> *)) (@ (t :: * -> *)) ->
-- undefined
-- @ ((forall d. Data d => c (t d))
-- -> Maybe (c Node))
-- (some Callstack thing)
--
-- $cdataCast1 =
-- \ (@ (c :: * -> *)) (@ (t :: * -> *)) _ [Occ=Dead] ->
-- lvl @ c @ t
--
-- vs
--
-- lvl =
-- \ (@ (t :: * -> *)) (@ (c :: * -> *)) ->
-- undefined
-- @ ((forall d. Data d => c (t d))
-- -> Maybe (c Node))
-- (some Callstack thing)
--
-- $cdataCast1 =
-- \ (@ (c :: * -> *)) (@ (t :: * -> *)) _ [Occ=Dead] ->
-- lvl @ t @ c
import Data.Data
data Node = Node (Maybe Int) [Node]
instance Data Node where
gfoldl = gfoldl
gunfold = gunfold
toConstr = toConstr
dataTypeOf = dataTypeOf
dataCast1 _ = undefined
dataCast2 = dataCast2
gmapT = gmapT
gmapQl = gmapQl
gmapQr = gmapQr
gmapQ = gmapQ
gmapQi = gmapQi
gmapM = gmapM
gmapMp = gmapMp
gmapMo = gmapMo
|