我想得到'(a b c)的第二个值,我不想使用cadr。 我能得到正确的答案:
(车(cdr'(a b c)))
“B
但是当我构建函数时:
(定义测试(lambda(list)(car(cdr(list)))))
(测试'(a b c))
。 。申请:不是程序; 期望一个可以应用于参数的过程 给出:'(a b c) 参数......:[无]
我真的不知道这个错误是什么意思..
答案 0 :(得分:1)
代码中有不正确的括号,围绕list
参数 - 在Scheme中:(f)
表示“应用f
函数,不带参数”,所以在您的代码中: (list)
正在尝试调用list
参数,就好像它是一个函数,但不会引发错误。
另请注意,调用list
参数是一个坏主意,已经有一个带有该名称的内置过程;这就是我将其重命名为lst
的原因。这应该解决它:
(define test
(lambda (lst)
(car (cdr lst))))
(test '(a b c))
=> b