方案"不是功能"错误

时间:2016-03-04 00:48:44

标签: scheme

我正在学习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上运行此代码。

1 个答案:

答案 0 :(得分:2)

你有一对太多的parens,表达式(higherOrder myFunction 4 5)计算结果为20,然后repl尝试评估(20),它不能,因为20不是函数。当Scheme评估一个列表(其中列表是未引用的parens中的任何内容)时,列表中的第一个条目被假定为一个函数。

将最后一行更改为

(display (higherOrder myFunction 4 5))