应用类型错误?

Wrong type to apply?

我玩 Scheme 大约 10 分钟,偶然发现了这个错误:

scheme@(guile-user) [2]> (define (a one two) ((* one two)))
scheme@(guile-user) [2]> (a 2 3)
ERROR: In procedure 6:
ERROR: Wrong type to apply: 6

我期待这个 return 6. "apply" 如何进入这个? 这个错误是什么意思?

Scheme 中的圆括号不仅仅是一个分组结构。它们通常表示功能应用程序。

该错误与您 define 的正文有关。具体来说,

((* one two))

表示

Call the result of multiplying one by two

JS 等价物类似于

function a (one, two) { (one * two)(); }

您很可能打算将该函数定义为

(define (a one two) (* one two))

这只是乘法,应该可以正常工作。