0

给定以下代码:

(define (g x y) (* x y)) 

(define (f x y z)
   (define (h x y)(g (+ x y) x z))h)

请注意,我将3参数传递到g, whereg只接受2

但是,解释器没有显示错误消息,为什么?

问候

4

1 回答 1

4

你实际上并没有在这里调用 h ,只是返回它。正确格式化您的代码应如下所示:

(define (f x y z)
    (define (h x y)
        (g (+ x y) x z))
    h)

因此,当您调用 (f 1 2 3) 时,您会返回 h。如果你打电话

((f 1 2 3) 1 2)

那么解释器会给出一个错误。

于 2013-01-26T09:13:15.923 回答