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



我正在运行以下代码:

(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(([apply,(anon(,+]

函数返回最后一个表达式的值。所以你需要以计算结束函数。将display调用放在第一位。
(define (myadd x y)
(display (+ x y))
(+ x y)
)

此外,您以后也不能正确调用函数。应该是:

(myadd 3 (mymul 3 4))

如果要使用apply,则需要使列表包含调用函数的结果。如果你引用整个列表,它只是一个字面意思,什么都不叫。

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

最新更新