【发布时间】:2010-12-07 11:18:24
【问题描述】:
假设我要取列表的第一项'(4 3 1) '(5 6 8)
我想要这样的东西
(first '(4 3 1) '(5 6 8))
应该把第一件东西还给我
(4 3 1)
结果。我可以调用的方案内置函数中是否有类似的东西?
car 不起作用,因为它只返回 1 个列表中的第一项
list-ref 不起作用,原因同上,返回列表中的 1 项
我该怎么做?如果我需要自己编写第一个函数?
【问题讨论】:
假设我要取列表的第一项'(4 3 1) '(5 6 8)
我想要这样的东西
(first '(4 3 1) '(5 6 8))
应该把第一件东西还给我
(4 3 1)
结果。我可以调用的方案内置函数中是否有类似的东西?
car 不起作用,因为它只返回 1 个列表中的第一项
list-ref 不起作用,原因同上,返回列表中的 1 项
我该怎么做?如果我需要自己编写第一个函数?
【问题讨论】:
您可以使用“。”在函数定义中接受任意数量的参数。
(define (first . args) (car args))
(first '(4 3 1) '(5 6 8)) ;; => (4 3 1)
【讨论】:
(define first car)?
car 只接受 1 个参数。
你太努力了:
> (define (first a b) a)
> (first '(1 2 3) '(4 5 6))
(1 2 3)
【讨论】:
自从我使用方案以来已经有一段时间了,但是您不需要先将列表放在自己的列表中
(first (list '(4 3 1) '(5 6 8)))
【讨论】: