Scheme如何获取列表中的第一项?

时间:2009-10-16 18:34:25

标签: list scheme

假设我想要列出'(4 3 1) '(5 6 8)

列表中的第一项

我想要这样的东西

(first '(4 3 1) '(5 6 8))

应该给我第一个项目

(4 3 1) 

结果。我可以调用方案内置函数吗?

汽车不起作用,因为它只返回1列表中的第一个项目

list-ref不起作用,上面同样的原因,在列表中返回了1个项目

我该怎么做?如果我需要自己编写第一个函数吗?

4 个答案:

答案 0 :(得分:6)

您可以使用list-ref过程使用索引从列表中获取元素,例如:

(let ((l '((4 3 1) (5 6 8))))
  (list-ref l 0)) ; get the element at index 0

但是,如果您只想要第一个元素,则可以使用car

(let ((l '((4 3 1) (5 6 8))))
  (car l))

检查正在运行here的代码段。

答案 1 :(得分:4)

你太努力了:

> (define (first a b) a)    
> (first '(1 2 3) '(4 5 6))
(1 2 3)

答案 2 :(得分:4)

你可以使用“。”在函数定义中获取任意数量的参数。

(define (first . args) (car args))
(first '(4 3 1) '(5 6 8))  ;; => (4 3 1)

答案 3 :(得分:1)

自从我使用scheme以来已经有一段时间了,但是你不需要首先在他们自己的列表中列出这些列表

(first (list '(4 3 1) '(5 6 8)))