2 simpl017.hs:44:12:
3     Couldn't match expected type ‘forall v. [E m i] -> E' v m a’
4                 with actual type ‘[E m i] -> E' v0 m a’
5     Relevant bindings include
6       f :: [E m i] -> E' v0 m a (bound at simpl017.hs:43:9)
7       ix :: [E m i] -> m i (bound at simpl017.hs:41:9)
8       a :: arr i a (bound at simpl017.hs:39:11)
9       liftArray :: arr i a -> E m (forall v. [E m i] -> E' v m a)
10         (bound at simpl017.hs:39:1)
11     In the first argument of ‘return’, namely ‘f’
12     In a stmt of a 'do' block: return f
14 simpl017.hs:63:5:
15     Couldn't match type ‘forall v.
16                          [E' RValue (ST s) Int] -> E' v (ST s) Int’
17                   with ‘[E (ST t0) Int] -> E' RValue (ST s) Int’
18     Expected type: [E (ST t0) Int] -> E (ST s) Int
19       Actual type: forall v. [E (ST s) Int] -> E' v (ST s) Int
20     Relevant bindings include
21       a :: forall v. [E (ST s) Int] -> E' v (ST s) Int
22         (bound at simpl017.hs:60:5)
23       ma :: STArray s Int Int (bound at simpl017.hs:59:5)
24       foo :: STArray s Int Int -> ST s Int (bound at simpl017.hs:59:1)
25     The function ‘a’ is applied to one argument,
26     but its type ‘forall v. [E (ST s) Int] -> E' v (ST s) Int’ has none
27     In the first argument of ‘plus’, namely ‘a [one]’
28     In a stmt of a 'do' block: a [one] `plus` a [one]
30 simpl017.hs:63:19:
31     Couldn't match type ‘forall v.
32                          [E' RValue (ST s) Int] -> E' v (ST s) Int’
33                   with ‘[E (ST t1) Int] -> E' RValue (ST s) Int’
34     Expected type: [E (ST t1) Int] -> E (ST s) Int
35       Actual type: forall v. [E (ST s) Int] -> E' v (ST s) Int
36     Relevant bindings include
37       a :: forall v. [E (ST s) Int] -> E' v (ST s) Int
38         (bound at simpl017.hs:60:5)
39       ma :: STArray s Int Int (bound at simpl017.hs:59:5)
40       foo :: STArray s Int Int -> ST s Int (bound at simpl017.hs:59:1)
41     The function ‘a’ is applied to one argument,
42     but its type ‘forall v. [E (ST s) Int] -> E' v (ST s) Int’ has none
43     In the second argument of ‘plus’, namely ‘a [one]’
44     In a stmt of a 'do' block: a [one] `plus` a [one]