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       liftArray :: arr i a -> E m (forall v. [E m i] -> E' v m a)
7         (bound at simpl017.hs:39:1)
8       a :: arr i a (bound at simpl017.hs:39:11)
9       ix :: [E m i] -> m i (bound at simpl017.hs:41:9)
10       f :: [E m i] -> E' v0 m a (bound at simpl017.hs:43:9)
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       foo :: STArray s Int Int -> ST s Int (bound at simpl017.hs:59:1)
22       ma :: STArray s Int Int (bound at simpl017.hs:59:5)
23       a :: forall v. [E (ST s) Int] -> E' v (ST s) Int
24         (bound at simpl017.hs:60:5)
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       foo :: STArray s Int Int -> ST s Int (bound at simpl017.hs:59:1)
38       ma :: STArray s Int Int (bound at simpl017.hs:59:5)
39       a :: forall v. [E (ST s) Int] -> E' v (ST s) Int
40         (bound at simpl017.hs:60:5)
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]