# SICP Solutions

### Section - Formulating Abstractions with Higher-Order Procedures

#### Exercise 1.41

Now evaluating the statement given:

The call double double returns a procedure, lets call this procedure X, that applies double twice to an argument passed to it.

And call to double (double double), return a procedure, lets call this procedure Y, that applies X twice to the argument passed to it.

And the invocation Y inc, returns a procedure, lets call it Z, that applies ‘X’ twice to inc. i.e. (X (X inc)).

Thus now finally the call to Z 5 is evaluated as follows:

Now we can see that in the innermost call, inc is called twice, than it is doubled thus called 4 times, again it is doubled thus called 8 times and again it is double thus called 16 times.

Thus thus function will return after calling inc 16 times starting with argument 5.

Thus the output is $16+5 = 21$.