Initial call
go(append(List(1,2,3,4,5),List(6)))
Descend into argument
append(List(1,2,3,4,5),List(6))
go(...)
Pattern match (append)
Suspend(() => append(List(2,3,4,5),List(6)) map (1::_))
go(...)
Return result from append into go
go(Suspend(() => append(List(2,3,4,5),List(6)) map (1::_)))
Pattern match (go), descend into suspension
append(List(2,3,4,5),List(6)) map (1::_)
go(...)
Descend into ... map (1::_)
append(List(2,3,4,5),List(6))
... map (1::_)
go(...)
Pattern match (append)
Suspend(() => append(List(3,4,5),List(6)) map (2::_))
... map (1::_)
go(...)
Return result from append to ... map (1::_)
Suspend(() => append(List(3,4,5),List(6)) map (2::_)) map (1::_)
go(...)
Apply ... map (1::_), descend into suspension
append(List(3,4,5),List(6)) map (2::_)
Suspend(() => ... map (1::_))
go(...)
Descend into ... map (2::_)
append(List(3,4,5),List(5,6))
... map (2::_)
Suspend(() => ... map (1::_))
go(...)
Pattern match (append)
Suspend(() => append(List(4,5),List(6)) map (3::_))
... map (2::_)
Suspend(() => ... map (1::_))
go(...)
Return result from append to ... map (2::_)
Suspend(() => append(List(4,5),List(6)) map (3::_)) map (2::_)
Suspend(() => ... map (1::_))
go(...)
Apply ... map (2::_), descend into suspension
append(List(4,5),List(6)) map (3::_)
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Descend into ... map (3::_)
append(List(4,5),List(6))
... map (3::_)
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Pattern match (append)
Suspend(() => append(List(5),List(6)) map (4::_))
... map (3::_)
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result from append to ... map (3::_)
Suspend(() => append(List(5),List(6)) map (4::_)) map (3::_)
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Apply ... map (3::_), descend into suspension
append(List(5),List(6)) map (4::_)
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Descend into ... map (4::_)
append(List(5),List(6))
... map (4::_)
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Pattern match (append)
Suspend(() => append(nil,List(6)) map (5::_))
... map (4::_)
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result from append to ... map (4::_)
Suspend(() => append(nil,List(6)) map (5::_)) map (4::_)
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Apply ... map (4::_), descend into suspension
append(nil,List(6)) map (5::_)
Suspend(() => ... map (4::_))
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Descend into ... map (4::_)
append(nil,List(6))
... map (5::_)
Suspend(() => ... map (4::_))
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Pattern match (append)
Return(List(6))
... map (5::_)
Suspend(() => ... map (4::_))
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result from append to ... map (5::_)
Return(List(6)) map (5::_)
Suspend(() => ... map (4::_))
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Apply ... map (5::_)
Return(List(5,6))
Suspend(() => ... map (4::_))
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Return(List(5,6)) map (4::_))
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Suspend(() => Return(List(5,6)) map (4::_)) map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Suspend(() => Suspend(() => Return(List(5,6)) map (4::_)) map (3::_)) map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Suspend(() => Suspend(() => Suspend(() => Return(List(5,6)) map (4::_)) map (3::_)) map (2::_)) map (1::_))
go(...)
Return result
go(Suspend(() => Suspend(() => Suspend(() => Suspend(() => Return(List(5,6)) map (4::_)) map (3::_)) map (2::_)) map (1::_)))
Pattern match (go), descend into suspension
Suspend(() => Suspend(() => Suspend(() => Return(List(5,6)) map (4::_)) map (3::_)) map (2::_)) map (1::_)
go(...)
Apply ... map (1::_), descend into suspension
Suspend(() => Suspend(() => Return(List(5,6)) map (4::_)) map (3::_)) map (2::_)
Suspend(() => ... map (1::_))
go(...)
Apply ... map (2::_), descend into suspension
Suspend(() => Return(List(5,6)) map (4::_)) map (3::_)
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Apply ... map (3::_), descend into suspension
Return(List(5,6)) map (4::_)
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Apply ... map (4::_)
Return(List(4,5,6))
Suspend(() => ... map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Return(List(4,5,6)) map (3::_))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Suspend(() => Return(List(4,5,6)) map (3::_)) map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Suspend(() => Suspend(() => Return(List(4,5,6)) map (3::_)) map (2::_)) map (1::_))
go(...)
Return result
go(Suspend(() => Suspend(() => Suspend(() => Return(List(4,5,6)) map (3::_)) map (2::_)) map (1::_)))
Pattern match go, descend into suspension
Suspend(() => Suspend(() => Return(List(4,5,6)) map (3::_)) map (2::_)) map (1::_)
go(...)
Apply ... map (1::_), descend into suspension
Suspend(() => Return(List(4,5,6)) map (3::_)) map (2::_)
Suspend(() => ... map (1::_))
go(...)
Apply ... map (2::_), descend into suspension
Return(List(4,5,6)) map (3::_)
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Apply ... map (3::_)
Return(List(3,4,5,6))
Suspend(() => ... map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Return(List(3,4,5,6)) map (2::_))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Suspend(() => Return(List(3,4,5,6)) map (2::_)) map (1::_))
go(...)
Return result
go(Suspend(() => Suspend(() => Return(List(3,4,5,6)) map (2::_)) map (1::_)))
Pattern match (go), descend into suspension
Suspend(() => Return(List(3,4,5,6)) map (2::_)) map (1::_)
go(...)
Apply ... map (1::_), descend into suspension
Return(List(3,4,5,6)) map (2::_)
Suspend(() => ... map (1::_))
go(...)
Apply ... map (2::_)
Return(List(2,3,4,5,6))
Suspend(() => ... map (1::_))
go(...)
Return result
Suspend(() => Return(List(2,3,4,5,6)) map (1::_))
go(...)
Return result
go(Suspend(() => Return(List(2,3,4,5,6)) map (1::_)))
Pattern match (go), descend into suspension
Return(List(2,3,4,5,6)) map (1::_)
go(...)
Apply ... map (1::_)
Return(List(1,2,3,4,5,6))
go(...)
Return result
go(Return(List(1,2,3,4,5,6)))
Pattern match (go)
List(1,2,3,4,5,6)
Finished.