得到7而不是(7)列表?

时间:2011-11-04 01:31:33

标签: scheme

这是我的代码:

  (define step1_list1 '(1 3 (5 7) 9))

  (car (cdr (cdr (step1_list1))))


   (define step1_list2 '((7)))

   (car (step1_list2))


   (define step1_list3 '(1 (2 (3 (4 (5 (6 7)))))))

   (car (cdr (cdr (cdr (cdr (cdr step1_list3))))))

  ))

运行此代码会导致错误:

(1 3 (5 7) 9) is not applicable

有什么问题?

2 个答案:

答案 0 :(得分:6)

从小处开始。

(define mylist '(1 2 3))

(display mylist)

(display (car mylist))

(display (car (mylist)))

依次运行每一个,看看你在每一步得到了什么。一旦你理解了为什么你得到你的输出,那么你应该能够修复你的问题中的代码。

答案 1 :(得分:2)

在Scheme中,(未引用的)括号表示功能应用。所以(car(step1_list2))尝试执行step1_list2作为一个过程(然后拿走结果的汽车)。相反,你想要:

(car step1_list2)