编写函数(pick-numbers-simple L)
。Scheme:函数,返回数字列表
L
是一个简单的列表,其中不包含嵌套的列表。
函数的结果是数字的L
列表。
在结果列表中的号码的出现顺序应该是相同的L
。例如,(pick-numbers-simple (list a b 1 2 c 3 d))
结果应该是(1 2 3)
。
我有很多需要写的东西,我只是需要一个开始。如果我能得到这个帮助,我可以完成剩下的工作。
编写函数(pick-numbers-simple L)
。Scheme:函数,返回数字列表
L
是一个简单的列表,其中不包含嵌套的列表。
函数的结果是数字的L
列表。
在结果列表中的号码的出现顺序应该是相同的L
。例如,(pick-numbers-simple (list a b 1 2 c 3 d))
结果应该是(1 2 3)
。
我有很多需要写的东西,我只是需要一个开始。如果我能得到这个帮助,我可以完成剩下的工作。
为了详细说明@Jerry棺材的答案,因为这个问题标记为 “功课”,你可以写pick-numbers-simple
,如:
(define (pick-numbers-simple xs)
(let loop ((acc (list))
(xs xs))
(cond
((empty? xs)
(reverse acc))
((number? (car xs))
(loop (cons (car xs) acc) (cdr xs)))
(else
(loop acc (cdr xs))))))
或者使用功能filter
:
(define (pick-numbers-simple xs)
(filter number? xs))
例子:
> (pick-numbers-simple (list 666 'foo 13 42 'bar))
(666 13 42)
number?
要告诉你一个特定的项目是否是一个数字。
一旦你的,它应该是相当简单:返回值是当前项目(当且仅当它是一个数字)组成的列表,其后在该列表的其余操作相同的功能。
哪一部分“写在方案中的功能”,你遇到问题的? – 2011-02-01 03:23:03