CS 61A Discussion 2 Environments and Higher Order Functions Albert Xu Kaavya Shah Attendance: links.cs61a.org/albert-disc Slides: albertxu.xyz/teaching/cs61a/
Announcements
Higher order functions!
Higher order functions! just kidding i hate this name. I think this just makes this idea really confusing.
functions can return other functions
functions can return other functions take in functions as arguments
functions can return other functions take in functions as arguments
functions can return other functions take in functions as arguments >>> f = make_power(3) >>> f(5)
functions can return other functions take in functions as arguments >>> f = make_power(3) >>> f(5) 125
functions can return other functions take in functions as arguments
functions can return other functions take in functions as arguments >>> apply_twice(square, 3) 81
Environment Diagrams let’s look at a function we’ve already seen.
Environment Diagrams let’s look at a function we’ve already seen. draw an environment diagram.
Environment Diagrams let’s look at a function we’ve already seen. def statement procedure: 1) Write the function on the right side, with appropriate intrinsic name + parent 2) Write the name of the function on the left in current frame 3) Draw an arrow to the function object on the right! 4) Skip the body.
Environment Diagrams let’s look at a function we’ve already seen. assignment statement procedure: 1) Evaluate the right hand side 2) Bind that value to a name on the left 3) If the name doesn’t exist in the current frame, add it! Otherwise change the current value
Environment Diagrams let’s look at a function we’ve already seen. function call procedure: 1) Evaluate the operator 2) Evaluate the operands 3) Open the call frame 4) Bind the parameters 5) Evaluate the body
Environment Diagrams let’s look at a function we’ve already seen. function call procedure: 1) Evaluate the operator 2) Evaluate the operands 3) Open the call frame 4) Bind the parameters 5) Evaluate the body *don’t open a frame for built-in functions!
Environment Diagrams let’s look at a function we’ve already seen. hi function call procedure: 1) Evaluate the operator 2) Evaluate the operands 3) Open the call frame 4) Bind the parameters 5) Evaluate the body *don’t open a frame for built-in functions!
Environment Diagrams let’s look at a function we’ve already seen. hi None function call procedure: 1) Evaluate the operator 2) Evaluate the operands 3) Open the call frame 4) Bind the parameters 5) Evaluate the body *don’t open a frame for built-in functions!
Environment Diagrams let’s look at a function we’ve already seen. hi None …and we’re done!
Thanks for coming. Have a great rest of your week! :) Attendance: links.cs61a.org/albert-disc Slides: albertxu.xyz/teaching/cs61a/
Recommend
More recommend