Scheme中的feeding函数作为参数

Feeding functions as parameters in Scheme

我是 Scheme 编程的新手,正在处理一项作业。我有多个函数,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))