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中并不特殊——它们的名称有点奇怪,但工作方式与其他函数类似。)非常感谢您指出我做错了什么。这肯定有帮助