首页 > 解决方案 > 馈送函数作为 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)))))

有什么我做错了还是很简单?让我知道是否需要任何澄清。提前感谢您的帮助。

标签: functionparametersschemecompositionfunction-call

解决方案


你调用程序的方式不对,它应该是这样的:

(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))

推荐阅读