(define (myfunc f alist)
(cond
[(empty? alist) empty]
[else (cons (f (first alist)) (myfunc f (rest alist)))]
))
f
是你的函數(例如ADD1,汽車)和alist
是你的論點。您只需構建一個列表,將f
應用於您的第一個參數,並遞歸添加列表的其餘部分。
關於你的最後一個例子。我假設9月以前定義爲(define September 8)
。在這種情況下,你的例子不會給你想要的輸出。最後一個列表將包含'September
而不是8個,因爲您已將您的列表聲明爲'()
,它將名稱視爲符號。
此外,輸出應爲'((2 3) (5 6) (8 8))
,因爲cdr
返回列表的第二個和後續元素。因此,您可能需要(list 7 September 9)
作爲您輸入內容的最後一個列表,以便代之以獲得'((2 3) (5 6) (8 9))
。
你不得不這樣調用該函數:(myfunc cdr (list (list 1 2 3) (list 4 5 6) (list 7 September 9)))
編輯:很明顯,這將使最有意義的定義九月9,因爲它是一年中第一個月,這樣調用該函數: (myfunc cdr (list (list 1 2 3) (list 4 5 6) (list 7 8 September)))
請說明上次調用的輸出。 – leppie 2015-02-09 05:02:29
@leppie我猜最後一次調用應該有''(7 8 9)'作爲最後的列表元素 - 我不知道OP如何改變這一點,但。 – 2015-02-09 05:04:39
@AlexisKing最後一個電話,是電話,並感謝編輯我的帖子 – Taiz 2015-02-09 05:31:53