Questions
6.1. A border case. What happens with our getField()
function if we apply it to a null object? What should its behavior be? If necessary, modify the function.
6.2. How many? How many calls would be needed to calculate fib(50)
without memoizing? For example, to calculate fib(0)
or fib(1)
, one call is enough with no further recursion needed, and for fib(6)
we saw that 25 calls were required. Can you find a formula to do this calculation?
6.3. A randomizing balancer. Write a higher-order function randomizer(fn1, fn2, ...)
that will receive a variable number of functions as arguments, and return a new function that will, on each call, randomly call one of fn1
, fn2
, and so on. You could possibly use this to balance calls to different services on a server if each function was able to do an Ajax call. For bonus points, ensure that no function will be called twice in a row.
6.4. Just say no! In this chapter, we wrote a not()
function that worked with boolean functions and a negate()
function...