I don't have the paper in front of me but I am familiar with the idea ...

Given the definition: 

f v = runST ( newVar v 'thenST'  \w ->
              readVar w)

Let's confirm that f :: (MutVar s a) -> (MutVar s a).
Let v be of type (MutVar s a), then:
  newVar v :: ST s' (MutVar s' (MutVar s a))
  w :: MutVar s' (MutVar s a)
  readVar w :: ST s' (MutVar s a)
  runST (...) :: MutVar s a

as required. --Amr


Reply via email to