地圖
Scheme 中的 map 函數用於將過程應用於列表(或多個列表)的每個元素,並返回包含結果的新列表。這使其成為轉換資料的理想選擇。
map 最簡單的形式如下:
(map procedure list)- 過程:應用於清單中每個元素的函數。
- 列表:其元素將被轉換的列表。
範例:將每個元素加倍
(define (double x)
(* x 2))
(map double (list 1 2 3 4))- 此處,函數
double應用於列表(1 2 3 4)的每個元素。 - 結果是一個新列表,其中每個元素都加倍。
輸出:(2 4 6 8)
它是如何運作的
建立新清單:
map將提供的流程套用至清單的每個元素並將結果收集到新清單中。
轉換資料:
- 它主要用於資料轉換而不是執行副作用。
範例:與多個清單一起使用
如果提供了多個列表,map 會處理每個列表中的對應元素。
(define (sum x y)
(+ x y))
(map sum (list 1 2 3) (list 4 5 6))- 函數
sum新增兩個清單中的對應元素,並將結果作為新列表傳回。
輸出:(5 7 9)
總結
map函數是一個強大的工具,用於透過對每個元素應用過程來轉換列表。- 與
for-each不同,map產生新清單,其中包含應用該過程的結果。 - 它支援多個列表,允許對它們進行元素級操作。
透過使用 map,您可以有效率地建立資料的轉換版本,同時保持原始清單不變。