方案:对象()不适用
Scheme: The object () is not applicable
这是一个初学者问题。然而,我花了 2 个多小时才找出错误(我也进行了搜索)但没有成功。
(define a (lambda (l i) (
(cond ((null? l) l)
(else (cons (cons (car l) i) (a (cdr l) i))))
)))
函数 a
应该将原子 i
与 l
的每个项目配对。例如:
(a '(1 2 3) 4)
应该 return ((1 4) (2 4) (3 4))
然而,当我尝试使用 invoke 函数时,我得到:
The object () is not applicable
我的函数有什么错误?
我正在使用 mit-scheme --load a.lisp
加载文件。然后我通过在交互模式下键入来调用函数 a。
错误,通常发生在 lisp 语言中,取决于括号的错误使用,在本例中是将函数主体括起来的额外括号。
删除它,函数应该可以工作:
(define a (lambda (l i)
(cond ((null? l) l)
(else (cons (cons (car l) i) (a (cdr l) i))))))
请记住,在 lisp 中,括号不是一种封闭表达式的方式,而是语法的重要组成部分:((+ 2 3))
与 (+ 2 3)
完全不同。后一个表达式的意思是:将数字 2 和 3 的值和 return 结果相加。前者的意思是:将数字 2 和 3 的值相加,得到结果(数字 5),并将其作为零参数函数调用。这显然会导致错误,因为 5 不是函数...
这是一个初学者问题。然而,我花了 2 个多小时才找出错误(我也进行了搜索)但没有成功。
(define a (lambda (l i) (
(cond ((null? l) l)
(else (cons (cons (car l) i) (a (cdr l) i))))
)))
函数 a
应该将原子 i
与 l
的每个项目配对。例如:
(a '(1 2 3) 4)
应该 return ((1 4) (2 4) (3 4))
然而,当我尝试使用 invoke 函数时,我得到:
The object () is not applicable
我的函数有什么错误?
我正在使用 mit-scheme --load a.lisp
加载文件。然后我通过在交互模式下键入来调用函数 a。
错误,通常发生在 lisp 语言中,取决于括号的错误使用,在本例中是将函数主体括起来的额外括号。
删除它,函数应该可以工作:
(define a (lambda (l i)
(cond ((null? l) l)
(else (cons (cons (car l) i) (a (cdr l) i))))))
请记住,在 lisp 中,括号不是一种封闭表达式的方式,而是语法的重要组成部分:((+ 2 3))
与 (+ 2 3)
完全不同。后一个表达式的意思是:将数字 2 和 3 的值和 return 结果相加。前者的意思是:将数字 2 和 3 的值相加,得到结果(数字 5),并将其作为零参数函数调用。这显然会导致错误,因为 5 不是函数...