(f f (- n 1) (+ x 1)))))]
(inc inc 3 2))
5)
+
+(test-prog '(let ([go (lambda (n m x)
+ (if (= n 0)
+ x
+ (go (- n 1) m (* x m))))]
+ [pow (lambda (p y) (go p y 1))])
+
+ (pow 3 2))
+ 8)
+
+(test-prog '(let ([pow (lambda (p y)
+ (let ([go (lambda (n x)
+ (if (= n 0)
+ x
+ (go (- n 1) (* x y))))])
+ (go p 1)))])
+ (pow 4 2))
+ 16)