tcfail103.hs:15:23: error: • Couldn't match type ‘s’ with ‘t’ Expected: STRef s Int Actual: STRef t Int ‘s’ is a rigid type variable bound by the type signature for: g :: forall s. ST s Int at tcfail103.hs:13:9-21 ‘t’ is a rigid type variable bound by the type signature for: f :: forall t. ST t Int at tcfail103.hs:10:1-12 • In the first argument of ‘readSTRef’, namely ‘v’ In the expression: readSTRef v In an equation for ‘g’: g = readSTRef v • Relevant bindings include g :: ST s Int (bound at tcfail103.hs:15:9) v :: STRef t Int (bound at tcfail103.hs:12:5) f :: ST t Int (bound at tcfail103.hs:11:1)