지도

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. 데이터 변환:

    • Side Effect를 수행하기보다는 주로 데이터 변환에 사용됩니다.

예: 여러 목록과 함께 사용

여러 목록이 제공되는 경우 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을 사용하면 원본 목록을 변경하지 않고 데이터의 변환된 버전을 효율적으로 생성할 수 있습니다.