地圖

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)


它是如何運作的

  1. 建立新清單

    • map 將提供的流程套用至清單的每個元素並將結果收集到新清單中。
  2. 轉換資料

    • 它主要用於資料轉換而不是執行副作用。

範例:與多個清單一起使用

如果提供了多個列表,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,您可以有效率地建立資料的轉換版本,同時保持原始清單不變。