我当前正在学习Scheme,并且负责编写一些内容来计算列表的长度,这是我目前的代码。
{define (len x)
(if(not(null? x))
(+ 1 len(cdr x))
(0))}
与'(2 3 4 5)
一起运行时,它会给出:
procedure application: expected procedure, given: '(2 3 4 5) (no arguments)
是一个错误。我究竟做错了什么?
答案 0 :(得分:2)
你有括号问题。试试这个:
(define (len x)
(if (not (null? x))
(+ 1 (len (cdr x)))
0))
特别注意:
()
包围。因此len(x)
错误,而(len x)
是正确的()
包围它。如果你写(0)
,Scheme会认为0
是一个函数并试图应用它,这显然会失败