我正在学习Scheme并且我一直收到这个错误:"错误:20不是函数"来自以下代码:
(define myFunction (lambda (x y)
(* x y)))
(define (higherOrder func x y)
(
func x y))
(display ((higherOrder myFunction 4 5)))
我正在尝试将函数作为参数之一传递。它经历了数学,因为它说" 20"在错误消息和(5 * 4 = 20)但它认为它是一个函数。问题是什么?我想不明白。我在https://repl.it/languages/Scheme上运行此代码。
答案 0 :(得分:2)
你有一对太多的parens,表达式(higherOrder myFunction 4 5)
计算结果为20,然后repl尝试评估(20)
,它不能,因为20不是函数。当Scheme评估一个列表(其中列表是未引用的parens中的任何内容)时,列表中的第一个条目被假定为一个函数。
将最后一行更改为
(display (higherOrder myFunction 4 5))