我的高阶程序有什么问题?

run*_*431 0 scheme

我无法弄清楚为什么我的lambda错了.它应该创建一个make-exp.

(define (exp b n)
    (if (n = 0) 
        1
        (* b (exp b (- n 1)))))

(define make-exp (lambda(n) (lambda(b)(exp b n ))))

(define square (make-exp 2))

(square 3)
Run Code Online (Sandbox Code Playgroud)

错误:2不是函数[square,exp,(anon)]

sep*_*p2k 5

(n = 0)
Run Code Online (Sandbox Code Playgroud)

这将调用函数n与参数=0,除非n2和不是一个函数,所以这是行不通的.大概是你的意思(= n 0).