Function 送料功能作为方案中的参数

Function 送料功能作为方案中的参数,function,parameters,scheme,composition,function-call,Function,Parameters,Scheme,Composition,Function Call,我不熟悉计划编程和作业。我有多个函数,其中func3位于顶部,并且func1馈送到func2,然后馈送到func3。例如,我有这样的东西 (define func1 (lambda (a b) (+ a b))) (define func2 (lambda (x y) (+ x y))) ;;; y is a function of above function1 我已经创建了func3,如下所示 (define func3 (lambda (a b x)

我不熟悉计划编程和作业。我有多个函数,其中
func3
位于顶部,并且
func1
馈送到
func2
,然后馈送到
func3
。例如,我有这样的东西

(define func1
  (lambda (a b)
    (+ a b)))

(define func2
  (lambda (x y)
    (+ x y)))   ;;; y is a function of above function1
我已经创建了
func3
,如下所示

(define func3
  (lambda (a b x)
    func2 (x (func1 (a b)))))

是我做错了什么,还是很简单?如果需要澄清,请告诉我。提前感谢您的帮助。

您调用过程的方式不正确,应该是这样的:

(define func3
  (lambda (a b x)
    (func2 x (func1 a b))))
正如您所看到的,代码中的一些括号放错了位置。关键是要理解如何调用过程,例如,这是错误的:

func2(x ...)  ; missing `(` at the left
这也是不正确的:

(func1 (a b)) ; don't surround parameters with `()`
正确的方法是用
()
包围每个过程调用,而不是它的参数,除非它们是过程调用本身。像这样:

(func1 a b)
(func2 x (func1 a b))

您在
(+ab)
(+xy)
中的语法都正确,但出于某种原因,您决定尝试其他方法。(与其他语言相比,
+
和其他数学运算符在Scheme中并不特殊——它们的名称有点奇怪,但工作方式与其他函数类似。)非常感谢您指出我做错了什么。这肯定有帮助