地図

Scheme の map 関数は、リスト (または複数のリスト) の各要素にプロシージャを適用し、結果を含む新しいリストを返すために使用されます。そのため、データの変換に最適です。

map の最も単純な形式は次のようになります。

(map procedure list)
  • 手順: リストの各要素に適用する関数。
  • リスト: 要素が変換されるリスト。

例: 各要素を 2 倍にする

(define (double x)
  (* x 2))

(map double (list 1 2 3 4))
  • ここでは、関数 double がリスト (1 2 3 4) の各要素に適用されます。
  • 結果は、各要素が 2 倍になった新しいリストになります。

出力: (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 は、2 つのリストから対応する要素を追加し、結果を新しいリストとして返します。

出力: (5 7 9)


概要

  • map 関数は、各要素にプロシージャを適用してリストを変換するための強力なツールです。
  • for-each とは異なり、map プロシージャを適用した結果を含む新しいリストを生成します。
  • 複数のリストをサポートし、要素ごとの操作を可能にします。

map を使用すると、元のリストを変更せずに、データの変換バージョンを効率的に作成できます。