PCALL
Stack | Expression | |||
| returnIO_? unit realWorld |
Variable | Object |
$0 | PAP(thenIO $1 $0) |
$1 | PAP(thenIO $3 $4) |
$3 | PAP(returnIO unit) |
$4 | PAP(thenIO $7 $8) |
$7 | PAP(returnIO unit) |
$8 | THUNK(poll_1 monadIO) |
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) |