a) Calling facT-Lambda with 1 and (lambda (x) x) (facT-Lambda 1 (lambda (x) x)) n: 1 accu: (lambda (x) x) evaluate: (accu 1) evaluate: ((lambda (x) x) 1) -> 1 b) Calling facT-Lambda with 2 and (lambda (x) x) (facT-Lambda 2 (lambda (x) x)) n1: 2 accu1: (lambda (x) x) evaluate: (facT-Lambda 1 (lambda (x) (accu1 (* n1 x)))) ; where n1 is 2 n2: 1 accu2: (lambda (x) (accu1 (* n1 x))) evaluate: (accu2 1) i.e.: ((lambda (x) (accu1 (* n1 x))) 1) i.e.: (accu1 (* n1 1)) ; where n1 is 2 i.e.: (accu1 2) i.e.: ((lambda (x) x) 2) -> 2 c) Calling facT-Lambda with 3 and (lambda (x) x) (facT-Lambda 3 (lambda (x) x)) n1: 3 accu1: (lambda (x) x) evaluate: (facT-Lambda 2 (lambda (x) (accu1 (* n1 x)))) ; where n1 is 3 n2: 2 accu2: (lambda (x) (accu1 (* n1 x))) evaluate: (facT-Lambda 1 (lambda (x) (accu2 (* n2 x)))) ; where n2 is 2 n3: 1 accu3: (lambda (x) (accu2 (* n2 x))) evaluate: (accu3 1) i.e.: ((lambda (x) (accu2 (* n2 x))) 1) i.e.: (accu2 (* n2 1)) ; where n2 is 2 i.e.: (accu2 2) i.e.: ((lambda (x) (accu1 (* n1 x))) 2) i.e.: (accu1 (* n1 2)) ; where n1 is 3 i.e.: (accu1 6) i.e.: ((lambda (x) x) 6) -> 6