2 T7453.hs:9:15: error:
3     • Couldn't match type ‘t’ with ‘t1’
4         because type variable ‘t1’ would escape its scope
5       This (rigid, skolem) type variable is bound by
6         the type signature for:
7           z :: Id t1
8         at T7453.hs:8:11-19
9       Expected type: Id t1
10         Actual type: Id t
11     • In the expression: aux
12       In an equation for ‘z’:
13           z = aux
14             where
15                 aux = Id v
16       In an equation for ‘cast1’:
17           cast1 v
18             = runId z
19             where
20                 z :: Id t
21                 z = aux
22                   where
23                       aux = Id v
24     • Relevant bindings include
25         aux :: Id t (bound at T7453.hs:10:21)
26         z :: Id t1 (bound at T7453.hs:9:11)
27         v :: t (bound at T7453.hs:7:7)
28         cast1 :: t -> a (bound at T7453.hs:7:1)
30 T7453.hs:15:15: error:
31     • Couldn't match type ‘t1’ with ‘t2’
32         because type variable ‘t2’ would escape its scope
33       This (rigid, skolem) type variable is bound by
34         the type signature for:
35           z :: () -> t2
36         at T7453.hs:14:11-22
37       Expected type: () -> t2
38         Actual type: () -> t1
39     • In the expression: aux
40       In an equation for ‘z’:
41           z = aux
42             where
43                 aux = const v
44       In an equation for ‘cast2’:
45           cast2 v
46             = z ()
47             where
48                 z :: () -> t
49                 z = aux
50                   where
51                       aux = const v
52     • Relevant bindings include
53         aux :: forall b. b -> t1 (bound at T7453.hs:16:21)
54         z :: () -> t2 (bound at T7453.hs:15:11)
55         v :: t1 (bound at T7453.hs:13:7)
56         cast2 :: t1 -> t (bound at T7453.hs:13:1)
58 T7453.hs:21:15: error:
59     • Couldn't match expected type ‘t2’ with actual type ‘t1’
60         because type variable ‘t2’ would escape its scope
61       This (rigid, skolem) type variable is bound by
62         the type signature for:
63           z :: t2
64         at T7453.hs:20:11-16
65     • In the expression: v
66       In an equation for ‘z’:
67           z = v
68             where
69                 aux = const v
70       In an equation for ‘cast3’:
71           cast3 v
72             = z
73             where
74                 z :: t
75                 z = v
76                   where
77                       aux = const v
78     • Relevant bindings include
79         aux :: forall b. b -> t1 (bound at T7453.hs:22:21)
80         z :: t2 (bound at T7453.hs:21:11)
81         v :: t1 (bound at T7453.hs:19:7)
82         cast3 :: t1 -> forall t. t (bound at T7453.hs:19:1)