Function Scheme-向函数传递太多参数不会';不会导致错误吗?

Function Scheme-向函数传递太多参数不会';不会导致错误吗?,function,functional-programming,scheme,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 但是,解释器没有显示错误消息,为什么 “问候”您实际上并没有在这里调用h,而是返回它。正确格式化的代码应该如下所示: (define (f x y z) (define (h x y) (g (+ x y) x z)) h) 所以当你打电话

给定以下代码:

(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

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


“问候”

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

(define (f x y z)
    (define (h x y)
        (g (+ x y) x z))
    h)
所以当你打电话(F123)时,你会得到h。如果你打电话

((f 1 2 3) 1 2)

然后解释器将给出一个错误。

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

(define (f x y z)
    (define (h x y)
        (g (+ x y) x z))
    h)
所以当你打电话(F123)时,你会得到h。如果你打电话

((f 1 2 3) 1 2)

然后解释器将给出一个错误。

如果您实际上没有使用错误数量的参数调用任何东西,则应该没有错误消息。@AntonKovalenko:但我确实调用了
g
,我使用
3
参数调用它……然后在调用
g
的地方显示一个代码。在您当前的代码中,您定义了一些东西,如果它有机会的话,将调用
g
。@AntonKovalenko:Aha!明白了,只有当我用
3
参数调用
g
时,我才能得到预期的错误+1.谢谢:)如果您实际上没有使用错误数量的参数调用任何对象,则应该不会出现错误消息。@AntonKovalenko:但我确实调用了
g
,我使用
3
参数调用它……然后在调用
g
的地方显示代码。在您当前的代码中,您定义了一些东西,如果它有机会的话,将调用
g
。@AntonKovalenko:Aha!明白了,只有当我用
3
参数调用
g
时,我才能得到预期的错误+1.谢谢:)