각각에 대해

Scheme의 for-each 함수는 목록(또는 여러 목록)의 각 요소에 프로시저를 적용하는 데 사용됩니다. 결과와 함께 새 목록을 반환하는 map과 달리 for-each은 변수 인쇄 또는 업데이트와 같은 부작용에 사용됩니다.

for-each의 가장 간단한 형태는 다음과 같습니다.

(for-each procedure list)
  • 프로시저: 목록의 각 요소에 적용하는 함수입니다.
  • 목록: 처리할 요소가 포함된 목록입니다.

예: 목록 인쇄

(define (print-item x)
  (lumi-message (number->string x)))

(for-each print-item (list 1 2 3 4))
  • 여기서 print-item 함수는 (1 2 3 4) 목록의 각 요소에 적용됩니다.
  • 이렇게 하면 각 번호가 순차적으로 인쇄됩니다.

출력: 1 2 3 4


작동 방식

  1. 각 요소에 대해 반복:

    • 제공된 절차는 목록의 모든 요소에 대해 순서대로 실행됩니다.
  2. 부작용을 수행:

    • 일반적인 부작용에는 인쇄, 로깅 또는 외부 변수 수정이 포함됩니다. map과 달리 for-each은 새 목록을 반환하지 않습니다.

예: 여러 목록과 함께 사용

여러 목록이 제공되는 경우 for-each은 각 목록의 해당 요소를 처리합니다.

(define (sum-and-print x y)
  (lumi-message (number->string (+ x y))))

(for-each sum-and-print (list 1 2 3) (list 4 5 6))
  • sum-and-print 함수는 두 목록의 해당 요소를 합산하고 결과를 인쇄합니다.

출력: 5 7 9


요약

  • for-each 함수는 목록의 각 요소에 부작용을 수행하는 데 유용합니다.
  • map과 달리 for-each은 새 목록을 생성하지 않으며 시술의 부작용에만 초점을 맞춥니다.
  • 여러 목록을 동시에 처리할 수 있으며 해당 요소에 절차를 적용할 수 있습니다.

for-each을 사용하면 데이터 변환이 아닌 작업 수행이 목표인 경우 목록을 효과적으로 처리할 수 있습니다.