假设我想要列出'(4 3 1) '(5 6 8)
我想要这样的东西
(first '(4 3 1) '(5 6 8))
应该给我第一个项目
(4 3 1)
结果。我可以调用方案内置函数吗?
汽车不起作用,因为它只返回1列表中的第一个项目
list-ref不起作用,上面同样的原因,在列表中返回了1个项目
我该怎么做?如果我需要自己编写第一个函数吗?
答案 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)))