Variable | Object |
$0 | PAP(thenIO $1 $0) |
$1 | PAP(thenIO $3 $4) |
$3 | THUNK(return_1 monadIO unit) |
$4 | THUNK(poll_1 monadIO) |
$5 | PAP(thenIO $3 $4) |
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) |