2011-02-01 85 views
1

編寫函數(pick-numbers-simple L)Scheme:函數,返回數字列表

L是一個簡單的列表,其中不包含嵌套的列表。

函數的結果是數字的L列表。

在結果列表中的號碼的出現順序應該是相同的L。例如,(pick-numbers-simple (list a b 1 2 c 3 d))結果應該是(1 2 3)

我有很多需要寫的東西,我只是需要一個開始。如果我能得到這個幫助,我可以完成剩下的工作。

+0

哪一部分「寫在方案中的功能」,你遇到問題的? – 2011-02-01 03:23:03

回答

2

爲了詳細說明@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) 
3

number?要告訴你一個特定的項目是否是一個數字。

一旦你的,它應該是相當簡單:返回值是當前項目(當且僅當它是一個數字)組成的列表,其後在該列表的其餘操作相同的功能。