我想获得 '(a b c) 的第二个值,但我不想使用 cadr。
我可以得到正确的答案:
(car (cdr '(a b c)))
'b
但是当我构建该函数时:
(define test (lambda (list) (car (cdr (list)))))
(test '(a b c))
我收到以下错误:
. . application: not a procedure;
expected a procedure that can be applied to arguments
given: '(a b c)
arguments...: [none]
我真的不知道这个错误是什么意思。
您的代码中包含不正确的括号list
参数 - 在方案中:(f)
意思是“应用f
没有参数的函数”,所以在你的代码中:(list)
正在尝试调用list
参数就好像它是一个函数,但事实并非如此,会引发错误。
另请注意,致电是一个坏主意list
参数,已经有一个具有该名称的内置过程;这就是为什么我将其重命名为lst
。这应该可以修复它:
(define test
(lambda (lst)
(car (cdr lst))))
(test '(a b c))
=> b
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)