如何从方案中的函数返回值

问题描述 投票:0回答:1

我正在运行以下代码:

(define (myadd x y)
    (+ x y)
    (display (+ x y))
)

(define (mymul x y)
    (* x y)
    (display (* x y))
)

(apply myadd '(3 (apply mymul '(3 4)))

我尝试运行(apply myadd '(3 (apply mymul '(3 4)))时得到答案12,但出现以下错误:

[错误:+:需要数字,但得到(应用mymul(引号(3 4)))[应用,(匿名),+]

functional-programming scheme
1个回答
3
投票

函数返回最后一个表达式的值。因此,您需要以计算结束函数。首先拨打display通话。

(define (myadd x y)
    (display (+ x y))
    (+ x y)
)

此外,您稍后无法正确调用这些函数。应该是:

(myadd 3 (mymul 3 4))

如果要使用apply,则需要使列表包含调用函数的结果。如果您引用整个列表,那只是一个文字,什么也没叫。

(apply myadd (list 3 (apply mymul '(3 4)))
© www.soinside.com 2019 - 2024. All rights reserved.