方案:我的功能不起作用

时间:2013-10-17 15:20:27

标签: list scheme

我想得到'(a b c)的第二个值,我不想使用cadr。 我能得到正确的答案:

  

(车(cdr'(a b c)))

     

“B

但是当我构建函数时:

  

(定义测试(lambda(list)(car(cdr(list)))))

     

(测试'(a b c))

     

。 。申请:不是程序;    期望一个可以应用于参数的过程     给出:'(a b c)     参数......:[无]

我真的不知道这个错误是什么意思..

1 个答案:

答案 0 :(得分:1)

代码中有不正确的括号,围绕list参数 - 在Scheme中:(f)表示“应用f函数,不带参数”,所以在您的代码中: (list)正在尝试调用list参数,就好像它是一个函数,但不会引发错误。

另请注意,调用list参数是一个坏主意,已经有一个带有该名称的内置过程;这就是我将其重命名为lst的原因。这应该解决它:

(define test
  (lambda (lst)
    (car (cdr lst))))

(test '(a b c))
=> b