Scheme - 将过多的参数传递给函数不会导致错误?

时间:2013-01-26 09:07:31

标签: function functional-programming scheme

给出以下代码:

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

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

请注意,我将3个参数传递到g,其中g仅接受2

但是,解释器没有出现错误信息,为什么?

此致

1 个答案:

答案 0 :(得分:4)

你实际上并没有在这里打电话,只是回来了。正确格式化您的代码应如下所示:

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

所以当你打电话(f 1 2 3)时,你会回来。如果你打电话

((f 1 2 3) 1 2)
然后解释器就会出错。