KNOWNCALL
| Stack | Expression | ||||
  | let {
   ret_thunk = THUNK(return_1 monadIO unit);
   poll_poll_thunk = THUNK(poll_1 monadIO)
} in then_1 monadIO ret_thunk poll_poll_thunk | 
| Variable | Object | 
$0  | PAP(thenIO $1 $0)  | 
$1  | BLACKHOLE  | 
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)  |