Discussion Session 6¶
Lazy Evaluation¶
Procedure definition and invocation¶
procedure(name, body)
call(name)
Tail Call Optimization¶
Example 1:
procedure foo1 {
print 1;
call foo2;
print 11;
}
procedure foo2 {
print 2;
call foo3;
}
procedure foo3 {
print 3;
}
call foo1;
Example 2:
procedure foo1 {
print 1;
call foo1;
}
call foo1;
While loop and recursive tail call is equivalent.
Discussion
What’s the benefit?