| Variable | Object | 
| $0 | PAP(thenIO $1 $0) | 
| $1 | PAP(thenIO $3 $4) | 
| $3 | PAP(returnIO unit) | 
| $4 | PAP(thenIO $7 $8) | 
| $7 | THUNK(return_1 monadIO unit) | 
| $8 | THUNK(poll_1 monadIO) | 
| $9 | PAP(thenIO $7 $8) | 
| main | BLACKHOLE | 
| monadIO | CON(Monad returnIO thenIO) | 
| poll | FUN(monad ->
       let {
          ret_thunk = THUNK(return_1 monad unit);
          poll_poll_thunk = THUNK(poll_1 monad)
       } in then_1 monad ret_thunk poll_poll_thunk) | 
| realWorld | CON(RealWorld) | 
| return | FUN(monad ->
       case monad of {
          Monad return then -> return
       }) | 
| returnIO | FUN(x s -> (# s, x #)) | 
| then | FUN(monad ->
       case monad of {
          Monad return then -> then
       }) | 
| thenIO | FUN(m k s ->
       case m_? s of {
          (# new_s, result #) -> k_? new_s
       }) | 
| unit | CON(Unit) |